建立憑證範本
本頁面說明憑證範本的屬性,並解釋如何建立憑證範本。如要進一步瞭解認證範本,請參閱「關於認證範本」。
必要的角色
如要取得建立憑證範本所需的權限,請要求管理員為您授予專案、資料夾或機構的 CA 服務作業管理員 (roles/privateca.caManager
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立憑證範本
如要建立認證範本,請使用下列其中一種方法:
控制台
前往 Google Cloud 控制台的「Certificate Authority Service」(憑證授權單位服務) 頁面。
按一下「範本管理工具」分頁標籤,然後點選「建立範本」。
使用「區域」清單選取憑證範本的位置。這個位置必須與您打算搭配憑證範本使用的 CA 集區位置相同。
在「憑證範本 ID」欄位中,輸入憑證範本的專屬 ID。視需要提供憑證範本的說明。
點選「下一步」。
如要為使用這個範本的憑證設定預設 X.509 值,請按一下「將預先定義的值納入使用這個憑證範本核發的憑證」切換鈕。然後按一下「設定預先定義的值」。
使用下列資訊設定預先定義的值:
定義基礎金鑰使用方式
這項設定是指數位憑證中的
Key Usage
欄位。這項擴充功能會指定憑證私密金鑰的使用方式,例如金鑰加密、資料加密、憑證簽署和 CRL 簽署。詳情請參閱「金鑰使用情形」。- 如要選取基礎金鑰使用方式,請按一下「指定這個 CA 集區所核發憑證的基礎金鑰使用方式」切換鈕,然後從列出的選項中選取。
- 點選「下一步」。
定義擴充金鑰使用方式
這項設定是指數位憑證中的
Extended Key Usage (EKU)
欄位。這項功能可針對金鑰的使用方式提供更具體且精細的限制,例如用於伺服器驗證、用戶端驗證、程式碼簽署、電子郵件保護等。詳情請參閱「擴充金鑰用途」。擴充金鑰使用方式是使用物件 ID (OID) 定義。如未設定擴充金鑰使用方式,系統會允許所有金鑰使用情境。
- 如要選取擴充金鑰使用方式,請按一下「針對從這個 CA 集區核發的憑證,寫入擴充金鑰使用方式」切換鈕,然後從列出的選項中選取。
- 點選「下一步」。
定義政策 ID
憑證中的憑證政策擴充功能會說明核發 CA 集區遵循的政策。這項擴充功能可包含憑證核發前驗證身分的方式、憑證撤銷方式,以及如何確保 CA 集區的完整性。這個擴充功能可協助您驗證 CA 集區核發的憑證,並查看憑證的使用方式。
詳情請參閱「憑證政策」。
如要指定定義憑證用途的政策,請按照下列步驟操作:
- 選用:在「政策 ID」欄位中新增政策 ID。
- 點選「下一步」。
新增授權單位資訊存取權 (AIA) OCSP 伺服器
憑證中的 AIA 擴充功能會提供下列資訊:
- OCSP 伺服器的位址,您可在此檢查憑證的撤銷狀態。
- 憑證核發者的存取方法。
詳情請參閱「機構資訊存取」。
您可以視需要新增 OCSP 伺服器。如要新增憑證中 AIA 擴充欄位顯示的 OCSP 伺服器,請按照下列步驟操作:
- 按一下 [新增項目]。
- 在「伺服器網址」欄位中,新增 OCSP 伺服器的網址。
- 按一下 [完成]。
- 點選「下一步」。
CA 選項
憑證範本中的「CA 選項」欄位,定義了在憑證授權單位 (CA) 層級中,如何使用產生的憑證。這項擴充功能主要用於判斷憑證是否可用於簽署其他憑證,以及憑證核發的任何限制。
選擇下列任一選項:
加入設定來說明 CA X.509 的額外資訊欄位:在憑證範本中指定控制 X.509 擴充功能的設定。
將核發的憑證限制為僅適用於 CA:只有在選取上一個步驟中提及的核取方塊時,才會顯示這個選項。這個布林值表示憑證是否為 CA 憑證。如果設為
true
,憑證可用於簽署其他憑證。如果false
,則為終端實體憑證,無法簽署其他憑證。 按一下這個切換鈕後,系統會進一步提示您為 CA 憑證中的擴充功能定義名稱限制。加入設定來說明 X.509 額外資訊欄位的路徑長度限制: 指定控制憑證鏈結長度的設定,該鏈結源自特定憑證。這項設定會指定可鏈結至這個 CA 憑證的 CA 數量上限。如果將頒發機構路徑長度上限設為
0
,CA 就只能核發終端實體憑證。如果設為1
,這個 CA 憑證下方的鏈結只能包含一個從屬 CA。如未宣告值,這個 CA 底下鏈結中的從屬 CA 數量就不會受到限制。- 點選「下一步」。
設定其他擴充功能
選用:您可以設定其他自訂擴充功能,納入 CA 集區核發的憑證。請執行下列步驟:
- 按一下 [新增項目]。
- 在「物件 ID」欄位中,新增以半形句點分隔的數字,做為有效的物件 ID。
- 在「Value」(值) 欄位中,新增 ID 的 Base64 編碼值。
- 如果擴充功能至關重要,請選取「擴充功能至關重要」。
如要儲存所有預先定義的值,請按一下「完成」。
接著,前往「設定擴充功能限制」部分。選取下列任一選項:
- 將憑證要求中的所有擴充欄位複製到憑證
- 捨棄憑證要求中的所有擴充欄位
- 將憑證要求中的特定擴充欄位複製到憑證
- 如要複製特定擴充功能,請按照下列步驟操作:
- 按一下「已知憑證副檔名」欄位,然後從清單中清除不需要的副檔名。
- 在「自訂擴充功能」欄位中,新增要納入 CA 集區核發憑證的擴充功能物件 ID。
按一下「下一步」,然後前往「設定身分限制」部分。 如要設定 CA 集區核發憑證中主體和 SAN 的限制,請選取下列一或兩個選項:
- 將憑證要求中的主體複製到憑證
- 將憑證要求中的主體別名 (SAN) 複製到憑證
依序按一下「下一步」和「完成」。
gcloud
gcloud privateca templates create TEMPLATE_ID \
--copy-subject \
--copy-sans \
--identity-cel-expression <expr> \
--predefined-values-file FILE_PATH \
--copy-all-requested-extensions \
--copy-extensions-by-oid <1.2.3.4,5.6.7.8> \
--copy-known-extensions <ext1,ext2>
更改下列內容:
- TEMPLATE_ID:憑證範本的專屬 ID。
- FILE_PATH:YAML 檔案,說明憑證範本設定的 X.509 值。
--copy-sans
標記可將憑證要求中的主體別名 (SAN) 擴充功能複製到已簽署的憑證。或者,您也可以指定 --no-copy-sans
,從憑證要求中捨棄任何呼叫端指定的 SAN。
--copy-subject
旗標可將憑證要求中的主體複製到已簽署的憑證。或者,您也可以指定 --no-copy-subject
,從憑證要求中捨棄任何呼叫端指定的主體。
--identity-cel-expression
標記會採用 CEL 運算式,在核發憑證前針對憑證的主體和主體別名進行評估,並傳回布林值,指出是否應允許要求。如要瞭解如何使用一般運算語言 (CEL) 運算式建立憑證範本,請參閱「使用 CEL 建立憑證範本」。
--predefined-values-file
旗標會指定 YAML 檔案的路徑,用於說明這個範本設定的任何預先定義 X.509 值。系統會將提供的擴充功能複製到使用這個範本的任何憑證要求,並優先採用這些擴充功能,而非憑證要求中允許的擴充功能。如果您更新預先定義的 X.509 值,更新會取代整組預先定義的 X.509 值。
如果設定 --copy-all-requested-extensions
旗標,憑證要求中指定的所有擴充功能都會複製到簽署的憑證。
如果設定 --copy-extensions-by-oid
標記,系統會將特定 OID 從憑證要求複製到簽署的憑證。
如果設定 --copy-known-extensions
標記,系統會將特定擴充欄位從憑證要求複製到簽署的憑證。這些已知擴充功能可以是下列其中一種:base-key-usage
、extended-key-usage
、ca-options
、policy-ids
或 aia-ocsp-servers
。
移除 --copy-all-requested-extensions
旗標,即可忽略憑證要求中的所有 X.509 擴充功能,但仍保留這個範本中定義的預先定義值。
以下是憑證範本設定範例:
keyUsage:
baseKeyUsage:
digitalSignature: true
keyEncipherment: true
contentCommitment: false
dataEncipherment: false
keyAgreement: false
certSign: false
crlSign: false
encipherOnly: false
decipherOnly: false
extendedKeyUsage:
serverAuth: true
clientAuth: false
codeSigning: false
emailProtection: false
timeStamping: false
ocspSigning: false
caOptions:
isCa: true
maxIssuerPathLength: 1
policyIds:
- objectIdPath:
- 1
- 2
- 3
additionalExtensions:
- objectId:
objectIdPath:
- 1
- 2
- 3
critical: false
value: "base64 encoded extension value"
如果 YAML 中未指定值,系統會省略這些值,或將預設值設為 false
。
如未指定值,系統會省略下列擴充功能:
keyUsage
policyIds
additionalExtensions
caOptions
擴充功能的「maxIssuerPathLength
」欄位
如未指定值,下列擴充功能預設為 false
:
caOptions
擴充功能的「isCa
」欄位
建立常見情境適用的憑證範本
本節提供 gcloud
指令,可為常見用途建立憑證範本。
任何網域的 DNS 伺服器 TLS 憑證
如要建立憑證範本,以便核發允許任何網域的伺服器 TLS 憑證,請按照下列操作說明進行:
建立名為
leaf_server_tls_values.yaml
的檔案,並在其中加入下列終端實體伺服器 TLS 設定:leaf_server_tls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true caOptions: isCa: false
如要只允許使用
DNS
類型 SAN 的憑證,請執行下列gcloud
指令:gcloud
gcloud privateca templates create server-tls \ --predefined-values-file leaf_server_tls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == DNS)"
如要進一步瞭解
gcloud privateca templates create
指令,請參閱 gcloud privateca templates create。
僅含測試網域的 DNS 伺服器 TLS 憑證
如要建立憑證範本,以便核發 DNS SAN 僅限於測試網域的伺服器 TLS 憑證,請使用下列 gcloud
指令:
gcloud
gcloud privateca templates create server-tls \
--predefined-values-file leaf_server_tls_values.yaml \
--copy-sans --no-copy-subject \
--identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"
leaf_server_tls_values.yaml
檔案的內容必須與上一個範例相同。
如要進一步瞭解如何使用 CEL 運算式,確保 DNS 名稱以特定字串開頭或結尾,請參閱 CEL 運算式範例。
Workload Identity 憑證
如要建立憑證範本來核發相互傳輸層安全標準 (mTLS) 憑證,請按照下列操作說明進行:
建立名為
leaf_mtls_values.yaml
的檔案,並在其中加入下列端點實體相互 TLS 設定。leaf_mtls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true clientAuth: true caOptions: isCa: false
如要只允許使用具有 SPIFFE URI SAN 的憑證,請使用下列
gcloud
指令:gcloud
gcloud privateca templates create workload-spiffe \ --predefined-values-file leaf_mtls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == URI && san.value.startsWith('spiffe://'))"
如要進一步瞭解
gcloud privateca templates create
指令,請參閱 gcloud privateca templates create。
如要進一步瞭解如何使用 CEL 運算式,確保 DNS 名稱以特定字串開頭或結尾,請參閱 CEL 運算式範例。
授予憑證範本存取權
如果您具備 CA 服務憑證範本使用者 (roles/privateca.templateUser
) 角色,即可使用憑證範本。建議憑證範本的作者將「CA 服務憑證範本使用者」角色授予機構中可能會使用該憑證範本的成員。
如要將 CA 服務憑證範本使用者 (roles/privateca.templateUser
) 角色授予 example.com
網域中的所有使用者,請使用下列 gcloud
指令:
gcloud
gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
--member "domain:example.com" \
--role "roles/privateca.templateUser"
更改下列內容:
- TEMPLATE_ID:憑證範本的專屬 ID。
如要進一步瞭解 gcloud privateca templates add-iam-policy-binding
指令,請參閱 gcloud privateca templates add-iam-policy-binding。
如要進一步瞭解 CA 服務的 IAM 角色和相關聯的權限,請參閱「使用身分與存取權管理功能控管存取權」一文。