預先定義的憑證範本

憑證授權單位服務提供預先定義的憑證範本,有助於簡化及確保憑證核發程序安全無虞。這些現成範本提供常見用途的預先設定 X.509 參數集,可簡化憑證管理作業、降低人為錯誤風險,並強制執行安全防護最佳做法。每個範本都專為特定用途設計,確保核發的憑證符合預期用途的正確參數,同時遵守核發憑證授權單位 (CA) 設定的任何限制。

本文適用於應用程式運算子群組中的對象,例如應用程式開發人員或資料科學家,他們負責管理專案中的憑證生命週期。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。

套用憑證範本

如要套用範本,請在 CertificateRequest 資源的 certificateTemplate 欄位中指定範本名稱。CA 服務會將所選範本的參數套用至核發的憑證。

如需有關如何建構 CertificateRequest 資源及加入 certificateTemplate 欄位的詳細指引,請參閱「申請憑證」。

憑證範本類型

系統提供下列預先定義的憑證範本。每個範本都是針對特定用途設計,並預先設定範本強制執行的 X.509 參數。

在下列範本說明中,範本未明確設定的任何參數,都會取自 CertificateRequest 資源,無論是憑證簽署要求 (CSR) 中提供的參數,還是您定義的欄位。

預設

範本名稱:default

如果您未在 CertificateRequest 資源中指定憑證範本,系統會自動使用這個範本。核發的憑證會沿用核發 CA 設定檔的 Key usage 和 Extended key usage 設定,並將 Basic constraints 設為 CA:FALSE,防止憑證用於簽署其他憑證。

X509 參數 值
RawSubject [User defined SubjectOverride or Passthrough from CSR]
基本限制 CA:FALSE
主體別名 [Passthrough from CSR]
金鑰使用方式 [Key usage set in CA]
擴充金鑰使用方式 [CA 中設定的擴充金鑰使用方式]

用戶端 TLS 憑證

範本名稱:endEntityClientAuthCertificate

這個範本會核發終端實體憑證,供用戶端 TLS 驗證使用。 核發的憑證會將 Extended key usage 設為 TLS web client authentication,並將 Basic constraints 設為 CA:FALSE,防止憑證用於簽署其他憑證。

X509 參數 值
RawSubject [User defined SubjectOverride or Passthrough from CSR]
基本限制 CA:FALSE
主體別名 [Passthrough from CSR]
金鑰使用方式 重要、數位簽章、金鑰編密
擴充金鑰使用方式 TLS 網頁用戶端驗證

伺服器 TLS 憑證

範本名稱:endEntityServerAuthCertificate

這個範本會核發伺服器端 TLS 驗證的終端實體憑證,非常適合用於網頁伺服器。核發的憑證會將 Extended key usage 設為 TLS web server authentication,並將 Basic constraints 設為 CA:FALSE,防止憑證用於簽署其他憑證。

X509 參數 值
RawSubject [User defined SubjectOverride or Passthrough from CSR]
基本限制 CA:FALSE
主體別名 [Passthrough from CSR]
金鑰使用方式 重要、數位簽章、金鑰編密
擴充金鑰使用方式 TLS 網路伺服器驗證

從屬 CA 憑證 (PathLen 0)

範本名稱:blankSubCACertificate_PathLen0_CSRPassthrough

這個範本會核發路徑長度限制為 0 的從屬 CA 憑證,這類憑證可簽署終端實體憑證,但無法簽署其他 CA 憑證。

X509 參數 值
RawSubject [User defined SubjectOverride or Passthrough from CSR]
基本限制 CA:TRUE, pathlen: 0
主體別名 [Passthrough from CSR]
金鑰使用方式 [CSR 中設定的金鑰用途]
擴充金鑰使用方式 [CSR 中設定的擴充金鑰使用方式]

從屬 CA 憑證 (PathLen 1)

範本名稱:blankSubCACertificate_PathLen1_CSRPassthrough

這個範本會核發路徑長度限制為 1 的從屬 CA 憑證,允許憑證簽署終端實體憑證,以及路徑長度為 0 的其他從屬 CA 憑證。

X509 參數 值
RawSubject [User defined SubjectOverride or Passthrough from CSR]
基本限制 CA:TRUE, pathlen: 1
主體別名 [Passthrough from CSR]
金鑰使用方式 [CSR 中設定的金鑰用途]
擴充金鑰使用方式 [CSR 中設定的擴充金鑰使用方式]

偵測衝突

每個 CA 都有設定檔,定義允許核發的憑證類型。舉例來說,CA 可能只能核發用戶端驗證憑證。建立 CA 時,系統會在 CertificateAuthority 資源的 certificateProfile 區段中設定 CA 的設定檔,詳情請參閱「建立根憑證授權單位」和「建立從屬憑證授權單位」。

使用預先定義的範本要求憑證時,憑證授權單位服務會根據簽發 CA 的設定驗證範本的參數。如要確保有效,所選範本中定義的 X.509 參數必須是核發 CA 根據 certificateProfile 允許的參數子集。如果範本要求的屬性或權限,CA 無權授予,就會發生衝突。舉例來說,如果核發 CA 僅授權授予 clientAuth,範本就無法要求 serverAuth 的 Extended key usage (EKU)。

如果 CA 服務偵測到這類衝突,CertificateRequest 會失敗。您可以檢查 CertificateRequest 資源的狀態,瞭解失敗原因。

範例

在下列情境中,名為 client-certs-ca 的 CA 設定為僅核發用戶端驗證憑證。其中的 certificateProfile 會指定唯一允許的 Extended key usage 為 TLS web client authentication。

您提交下列 CertificateRequest,使用 endEntityServerAuthCertificate 範本為伺服器核發憑證:

  apiVersion: pki.security.gdc.goog/v1
  kind: CertificateRequest
  metadata:
    name: server-cert-req
    namespace: my-project
  spec:
    certificateAuthorityRef:
      name: client-certs-ca
      namespace: my-project
    csr: "..."
    certificateTemplate: endEntityServerAuthCertificate
    signedCertificateSecret: server-cert-secret

這項要求會因下列原因而失敗:

  • endEntityServerAuthCertificate 範本需要 EKU TLS web server authentication。
  • 核發 CA (client-certs-ca) 具有僅允許 EKU TLS web client authentication 的 certificateProfile。

由於範本所需的 EKU 未列在 CA 設定檔允許的 EKU 清單中,因此範本需求並非 CA 允許參數的子集。因此,我們拒絕了這項要求。