預先定義的憑證範本

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

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

套用憑證範本

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

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

憑證範本類型

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

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

預設

範本名稱:default

如果您未在 CertificateRequest 資源中指定憑證範本,系統會自動使用這個範本。核發的憑證會沿用核發 CA 設定檔的 Key usageExtended 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,範本就無法要求 serverAuthExtended key usage (EKU)。

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

範例

在下列情境中,名為 client-certs-ca 的 CA 設定為僅核發用戶端驗證憑證。其 certificateProfile 指定唯一允許的 Extended key usageTLS 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 authenticationcertificateProfile

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