憑證授權單位服務提供預先定義的憑證範本,有助於簡化及確保憑證核發程序安全無虞。這些現成範本提供常見用途的預先設定 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範本需要 EKUTLS web server authentication。- 核發 CA (
client-certs-ca) 具有僅允許 EKUTLS web client authentication的certificateProfile。
由於範本要求的 EKU 未列在 CA 設定檔允許的 EKU 清單中,因此範本要求並非 CA 允許參數的子集。因此,我們拒絕了這項要求。