新增憑證核發政策
在 CA 服務中新增憑證核發政策時,需要定義規則和限制,以控管憑證授權單位 (CA) 核發的憑證類型。如要進一步瞭解憑證核發政策,請參閱「關於憑證核發政策」。
憑證核發政策可讓您指定核發憑證時可加入的主體和主體別名 (SAN)。您可以在建立 CA 集區時指定憑證核發政策,也可以更新現有的 CA 集區來新增核發政策。
詳情請參閱「範本和發行政策總覽」。
事前準備
確認您具備 CA 服務作業管理員 (
roles/privateca.caManager
) 或 CA 服務管理員 (roles/privateca.admin
) IAM 角色。如要瞭解如何將 IAM 授予主體,請參閱「授予單一角色」。
您可以在建立 CA 集區時,或更新現有 CA 集區時,將憑證核發政策新增至 CA 集區。
請使用下列其中一種方法:
控制台
前往Google Cloud 控制台的「Certificate Authority Service」(憑證授權單位服務) 頁面。前往憑證授權單位服務
在「CA pool manager」(CA 集區管理員) 頁面中,按一下要新增憑證核發政策的 CA 集區名稱。
在「CA pool」(CA 集區) 頁面中,按一下
「Edit」(編輯)。
這項設定是指數位憑證內的 Key Usage
欄位。指定憑證私密金鑰的使用方式,例如金鑰加密、資料加密、憑證簽署和 CRL 簽署。詳情請參閱「金鑰使用情形」。
- 如要選取基礎金鑰使用方式,請按一下「指定這個 CA 集區所核發憑證的基礎金鑰使用方式」切換鈕,然後從列出的選項中選取。
- 點選「下一步」。
這項設定是指數位憑證中的 Extended Key Usage (EKU)
欄位。這項功能可針對金鑰的使用方式提供更具體且精細的限制,例如用於伺服器驗證、用戶端驗證、程式碼簽署和電子郵件保護。詳情請參閱「擴充金鑰用途」。
擴充金鑰使用方式是使用物件 ID (OID) 定義。如未設定擴充金鑰使用方式,系統會允許所有金鑰使用情境。
- 如要選取擴充金鑰使用方式,請按一下「針對從這個 CA 集區核發的憑證,寫入擴充金鑰使用方式」切換鈕,然後從列出的選項中選取。
- 點選「下一步」。
憑證中的憑證政策擴充功能會顯示核發 CA 集區遵循的政策。這項擴充功能可包含憑證核發前身分驗證方式、憑證撤銷方式,以及如何確保 CA 集區完整性等資訊。這個擴充功能可協助您驗證 CA 集區核發的憑證,並查看憑證的使用方式。
詳情請參閱「憑證政策」。
如要指定定義憑證用途的政策,請按照下列步驟操作:
- 在「政策 ID」欄位中新增政策 ID。
- 按一下「下一步」。
憑證中的 AIA 擴充功能會提供下列資訊:
- OCSP 伺服器的位址,您可在此檢查憑證的撤銷狀態。
- 憑證核發者的存取方法。
詳情請參閱「機構資訊存取」。
如要新增憑證 AIA 擴充欄位中顯示的 OCSP 伺服器,請按照下列步驟操作:
- 按一下「新增項目」。
- 在「伺服器網址」欄位中,新增 OCSP 伺服器的網址。
- 按一下[Done] (完成)。
- 按一下「下一步」。
憑證範本中的「CA 選項」欄位,定義了如何在憑證授權單位 (CA) 階層中使用產生的憑證。CA 選項會決定憑證是否可用於簽署其他憑證,以及憑證核發的限制。
選擇下列任一選項:
加入設定來說明 CA X.509 的額外資訊欄位:在憑證範本中指定控制 X.509 擴充功能的設定。
將核發的憑證限制為僅適用於 CA:只有在選取上一個步驟中提及的核取方塊時,才會顯示這個選項。這個布林值表示憑證是否為 CA 憑證。如果設為
true
,憑證可用於簽署其他憑證。如果false
,則憑證為終端實體憑證,無法簽署其他憑證。 按一下這個切換鈕後,系統會進一步提示您為 CA 憑證中的擴充功能定義名稱限制。加入設定來說明 X.509 額外資訊欄位的路徑長度限制: 指定控制憑證鏈長度的設定, 該長度是從特定憑證衍生而來。如果將頒發機構路徑長度上限設為
0
,CA 就只能核發終端實體憑證。如果設為1
,這個 CA 憑證底下的鏈結只能包含一個從屬 CA。如未宣告值,這個 CA 底下鏈結中的下層 CA 數量就不會受到限制。- 點選「下一步」。
如要設定其他自訂擴充欄位,以便納入 CA 集區核發的憑證,請按照下列步驟操作:
- 按一下「新增項目」。
- 在「物件 ID」欄位中,新增以半形句點分隔的數字,做為有效的物件 ID。
- 在「Value」(值) 欄位中,新增 ID 的 Base64 編碼值。
- 如果擴充功能至關重要,請選取「擴充功能至關重要」。
如要儲存所有基準值設定,請按一下「完成」。
gcloud
如要使用 Google Cloud CLI 將憑證核發政策新增至 CA 集區,您必須建立 YAML 檔案,說明 CA 集區可核發的憑證限制。內容對應至 IssuancePolicy。
使用 Cloud Shell 編輯器建立
policy.yaml
檔案,並加入下列內容:identityConstraints: allowSubjectPassthrough: true allowSubjectAltNamesPassthrough: true
其中:
allowSubjectPassthrough
欄位為必填欄位。如果「allowSubjectPassthrough
」欄位設為「true
」,主體欄位會從憑證要求複製到簽署的憑證。否則系統會捨棄要求的 Subject。- 如果
allowSubjectAltNamesPassthrough
欄位設為true
,SubjectAltNames 擴充功能會從憑證要求複製到簽署的憑證。否則系統會捨棄要求的 SubjectAltNames。
如要使用上一步建立的檔案更新 CA 集區的憑證核發政策,請執行下列指令:
gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
更改下列內容:
- POOL_NAME:CA 集區的名稱。
- LOCATION:CA 集區的位置。如需完整的位置清單,請參閱「位置」。
- FILE_PATH:
policy.yaml
檔案的路徑。
如要進一步瞭解
gcloud privateca pools update
指令,請參閱 gcloud privateca pools update。
支援的限制
CA 服務支援下列簽發政策限制。您可以視需要組合下列限制,建立自訂憑證核發政策。
限制或強制允許的 X.509 值
CA 集區可以設定 passthrough_extensions 欄位,限制憑證要求中允許的 X.509 值。
CA 集區也可以使用 baseline_values 欄位,明確指定要加入所有核發憑證的 X.509 值,並覆寫所有要求的值。
CA 集區的baseline_values可指定下列屬性:
你也可以同時使用這些選項。
如果更新 baseline_values
欄位的任何部分,更新會取代 baseline_values
欄位中的整組值。
範例:限制 CA 只能核發具有相互傳輸層安全標準 (mTLS) X.509 值的終端實體憑證。
policy.yaml
baselineValues: caOptions: isCa: false keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: clientAuth: true serverAuth: true
範例:限制 CA 只能核發具有基準 AIA OCSP 網址的實體程式碼簽署憑證。
policy.yaml
baselineValues: caOptions: isCa: false keyUsage: baseKeyUsage: digitalSignature: true extendedKeyUsage: codeSigning: true aiaOcspServers: - "http://foo.bar/revocation" additionalExtensions: - objectId: objectIdPath: - 1 - 2 - 3 critical: false value: "base64 encoded extension value"
如要進一步瞭解終端實體 mTLS 的憑證設定檔,請參閱終端實體 mTLS。
限制允許的身分識別欄位
如要限制透過 CA 集區核發的憑證身分,您可以將 [通用運算式語言 (CEL)][4]{: .external} 運算式新增至核發政策的identity_constraints 欄位。CEL 運算式可對憑證的主體網域名稱 (包括通用名稱) 和 SAN 施加任意限制。
如要進一步瞭解如何使用 CEL 運算式限制主體和 SAN,請參閱「使用 CEL」一文。
範例:允許 CA 僅核發符合指定主體的憑證。
policy.yaml
identityConstraints: allowSubjectPassthrough: true allowSubjectAltNamesPassthrough: false celExpression: expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
celExpression
欄位為選填。使用一般運算語言 (CEL) 運算式,在簽署憑證前驗證已解析的 X.509 主體和 SAN。如要進一步瞭解如何使用 CEL 運算式,請參閱「使用 CEL」。範例:只允許 DNS 名稱為
us.google.org
或結尾為.google.com
的 SAN。policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
範例:只允許具有 URI
https://google.com/webhp
或以spiffe://example-trust-domain-1/ns/namespace1/sa/
開頭的 SAN。policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
範例:只允許具有電子郵件地址
example@google.com
或結尾為@google.org
的 SAN。policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
範例:只允許具有特定 OID 和自訂值的自訂 SAN。
policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
限制核發憑證的追溯日期
如要為核發的憑證設定過去的 not_before_time,請使用 backdate_duration 欄位。設定完成後,這個 CA 集區的憑證 not_before_time 會等於核發時間減去指定時間長度。系統會調整 not_after_time,以維持要求的憑證生命週期。backdate_duration 不得超過 48 小時。
範例
如要將憑證的日期調回 1 小時,請使用下列 policy.yaml
檔案:
policy.yaml
backdateDuration: 3600s
限制核發憑證的生命週期長度上限
如要限制核發憑證的生命週期,請使用 maximum_lifetime 欄位。如果要求的憑證生命週期長度超過上限,系統會明確截斷憑證的生命週期。
範例
如要允許最長 30 天的生命週期,請使用下列 policy.yaml
檔案:
policy.yaml
maximumLifetime: 2592000s
限制允許的憑證核發模式
您可以透過憑證簽署要求 (CSR) 或要求值的內嵌說明來要求憑證。部分機構可能會偏好限制可用的選項,因為後者不需要相關聯私密金鑰的擁有權證明。您可以使用 allowedIssuanceModes 欄位設定這些限制。
如要進一步瞭解如何指定可向 CA 集區要求憑證的方式,請參閱 IssuanceModes。
如要進一步瞭解如何申請憑證,請參閱「建立憑證要求」。
範例:僅允許核發 CSR。
policy.yaml
allowedIssuanceModes:
allowCsrBasedIssuance: True
allowConfigBasedIssuance: False
限制憑證要求的公開金鑰演算法
如要限制憑證可使用的最短金鑰長度和公開金鑰演算法,您可以使用憑證核發政策 YAML 檔案中的 allowedKeyTypes 欄位。如果指定這個欄位,憑證要求的公開金鑰必須與 YAML 檔案中列出的其中一種金鑰類型相符。如果未指定這個欄位,則可以使用任何金鑰,但模數大小少於 2048 位元的 RSA 金鑰除外。如要使用模數大小小於 2048 位元的 RSA 金鑰,您必須使用憑證核發政策明確允許。
範例:允許模數大小介於 3072 位元和 4096 位元 (含) 之間的 RSA 金鑰,或 NIST P-256 曲線上的橢圓曲線數位簽章演算法 (ECDSA) 金鑰。
policy.yaml
allowedKeyTypes:
- rsa:
minModulusSize: 3072
maxModulusSize: 4096
- ellipticCurve:
signatureAlgorithm: ECDSA_P256
您可以選擇下列其中一種橢圓曲線簽章演算法:
EC_SIGNATURE_ALGORITHM_UNSPECIFIED
- 可以使用任何簽名演算法。ECDSA_P256
- 透過 NIST P-256 曲線的橢圓曲線數位簽章。ECDSA_P384
- 透過 NIST P-384 曲線的橢圓曲線數位簽章。EDDSA_25519
- 透過 25519 曲線的愛德華曲線數位簽章演算法,如 RFC 8410 所述。
後續步驟
- 進一步瞭解憑證設定檔。
- 進一步瞭解如何申請認證。
- 瞭解如何設定 IAM 政策。
- 瞭解如何使用一般運算語言 (CEL)。
- 瞭解如何管理各種政策控制項。