建立根憑證授權單位
本頁說明如何在 CA 集區中建立根憑證授權單位 (CA)。
根層級 CA 位於公用金鑰基礎架構 (PKI) 階層的頂端,負責形成 PKI 的信任錨點。如要正確參與 PKI 並使用憑證,裝置、軟體或元件必須信任 PKI。方法是將裝置、軟體或元件設定為信任根 CA。因此,根 CA 核發的所有憑證都會受到信任。
事前準備
- 確認您具備 CA 服務作業管理員 (
roles/privateca.caManager
) 或 CA 服務管理員 (roles/privateca.admin
) IAM 角色。詳情請參閱「設定 IAM 政策」。 - 建立 CA 集區。
- 決定 CA 設定。
建立根 CA
根 CA 具有自行簽署的憑證,您必須將該憑證發布至用戶端的信任存放區。根 CA 的憑證位於憑證鏈頂端。其他 CA 無法撤銷 CA 憑證。根 CA 的 CRL 只適用於根 CA 核發的其他憑證,不適用於根 CA 本身。
您可以在現有或新的 CA 集區中建立根 CA。下列操作說明使用現有集區。
控制台
如要在現有的 CA 集區中建立根 CA,請按照下列步驟操作:
前往Google Cloud 控制台的「Certificate Authority Service」(憑證授權單位服務) 頁面。
按一下「CA 管理員」分頁標籤。
按一下「Create CA」(建立 CA)
展開箭頭,然後選取「Create CA in an existing CA pool」(在現有的 CA 集區中建立 CA)。
選取 CA 集區
從清單中選取現有的 CA 集區,然後按一下「繼續」。
選取 CA 類型
- 在「Type」(類型) 下方,選取「Root CA」(根 CA)。
- 在「Valid for」欄位中,輸入您希望 CA 憑證核發的憑證有效期限。
- 在「Initialized state」(初始狀態) 下方,選取要建立憑證授權單位的作業狀態。
- 按一下「繼續」。
- 在「Organization (O)」(機構 (O)) 欄位中,輸入貴公司名稱。
- 選用:在「機構單位 (OU)」欄位中,輸入公司部門或業務單位。
- 選用:在「Country name (C)」(國家/地區名稱 (C)) 欄位中,輸入兩個英文字母的國家/地區代碼。
- 選用:在「州/省名稱」欄位中,輸入您所在州/省的名稱。
- 選用:在「Locality name」(所在地名稱) 欄位中輸入城市名稱。
- 在「CA common name (CN)」(CA 一般名稱 (CN)) 欄位中,輸入 CA 名稱。
- 按一下「繼續」。
- 請選擇最符合需求的金鑰演算法。如要瞭解如何決定合適的金鑰演算法,請參閱「選擇金鑰演算法」。
- 按一下「繼續」。
- 選擇要使用 Google 代管或客戶代管的 Cloud Storage 值區。
- 如果是 Google 管理的 Cloud Storage 值區,CA 服務會在與 CA 相同的位置建立 Google 管理的值區。
- 如果是客戶代管的 Cloud Storage 值區,請按一下「瀏覽」,然後選取現有的 Cloud Storage 值區。
- 按一下「繼續」。
下列步驟為選用步驟。
如要為 CA 新增標籤,請按照下列步驟操作:
- 按一下「新增項目」 。
- 在「Key 1」欄位中,輸入標籤鍵。
- 在「Value 1」(值 1) 欄位中輸入標籤值。
- 如要新增其他標籤,請按一下「新增項目」 。然後,按照步驟 2 和 3 所述,新增標籤鍵和值。
- 按一下「繼續」。
詳閱所有設定,然後按一下「完成」建立 CA。
gcloud
如要在現有的 CA 集區中建立新的根 CA,請執行下列指令:
gcloud privateca roots create ROOT_CA_ID \ --location=LOCATION \ --pool=POOL_ID \ --key-algorithm=KEY_ALGORITHM \ --subject="CN=my-ca, O=Test LLC"
更改下列內容:
- ROOT_CA_ID:CA 的名稱。
- LOCATION:CA 集區的位置。
- POOL_ID:CA 集區的名稱。
- KEY_ALGORITHM:用於建立 Cloud KMS 金鑰的演算法。這個標記是選用的,如未加入此標記,金鑰演算法預設為
rsa-pkcs1-4096-sha256
。詳情請參閱 --key-algorithm 標記。
根據預設,CA 會建立在
STAGED
狀態。如要預設啟用 CA,請加入--auto-enable
旗標。如要使用客戶管理的 Cloud Storage 值區發布 CA 憑證和 CRL,請在指令中加入
--bucket bucket-name
。請將 bucket-name 改成 Cloud Storage bucket 名稱。如要查看完整的設定清單,請執行下列指令:
gcloud privateca roots create --help
Terraform
如要使用 Google 擁有及管理的 加密金鑰建立根 CA,請使用下列設定範例:
如要使用自行管理的金鑰建立根 CA,請使用下列範例設定:
Go
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
REST API
建立根 CA。
HTTP 方法和網址:
POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities?certificate_authority_id=ROOT_CA_ID
JSON 要求主體:
{ "type": "SELF_SIGNED", "lifetime": { "seconds": 315576000, "nanos": 0 }, "config": { "subject_config": { "subject": { "organization": "ORGANIZATION_NAME", "common_name": "COMMON_NAME" } }, "x509_config":{ "ca_options":{ "is_ca":true }, "key_usage":{ "base_key_usage":{ "cert_sign":true, "crl_sign":true } } } }, "key_spec":{ "algorithm":"RSA_PKCS1_4096_SHA256" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID", "metadata": {...}, "done": false }
輪詢作業,直到作業完成為止。
HTTP 方法和網址:
GET https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID", "metadata": {...}, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.security.privateca.v1.CertificateAuthority", "name": "...", } }
確認 CA 運作正常後,即可啟用 CA,開始為 CA 集區核發負載平衡憑證。
啟用根 CA
gcloud
如要啟用根 CA,請執行下列 gcloud
指令:
gcloud privateca roots enable ROOT_CA_ID --location=LOCATION --pool=POOL_ID
更改下列內容:
- ROOT_CA_ID:CA 的名稱。
- LOCATION:CA 集區的位置。如需完整的位置清單,請參閱「位置」。
- POOL_ID:CA 集區的名稱。
Terraform
如果您使用 Terraform 建立根 CA,系統會在建立時啟用根 CA。如要在 STAGED
狀態下建立根 CA,請在建立 CA 時將 desired_state
欄位設為 STAGED
。
建立 CA 後,您可以將 desired_state
欄位設為 ENABLED
或 DISABLED
。
Go
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要向 CA 服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
REST API
啟用 CA,從 CA 集區核發憑證。
HTTP 方法和網址:
POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/ROOT_CA_ID:enable
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID", "metadata": {...}, "done": false }
輪詢作業,直到作業完成為止。
HTTP 方法和網址:
GET https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID", "metadata": {...}, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.security.privateca.v1.CertificateAuthority", "name": "...", } }
測試 CA
如要驗證 CA 是否能夠核發憑證,請向相關聯的 CA 集區要求憑證,並使用 --ca
旗標明確提及要測試的 CA 名稱。
您可以透過下列方法向 CA 集區要求憑證:
- 請 CA Service 為您建立私密或公開金鑰。
- 產生自己的私密或公開金鑰,並提交憑證簽署要求 (CSR)。
使用自動產生的私密金鑰或公開金鑰,向 CA 集區中的 CA 申請憑證會比較容易。本節將說明如何使用該方法測試 CA。
如要使用自動產生的私密金鑰或公開金鑰,向 CA 集區中的 CA 要求憑證,請執行下列 gcloud
指令:
gcloud privateca certificates create \
--issuer-pool=POOL_ID \
--issuer-location=ISSUER_LOCATION \
--ca=ROOT_CA_ID \
--generate-key \
--key-output-file=KEY_FILENAME \
--cert-output-file=CERT_FILENAME \
--dns-san=DNS_NAME
更改下列內容:
- POOL_ID:CA 集區的名稱。
- ISSUER_LOCATION:核發數位憑證的憑證授權單位 (CA) 位置。
- ROOT_CA_ID:要測試的 CA 專屬 ID。
- KEY_FILENAME:以 PEM 格式寫入所產生金鑰的檔案。
- CERT_FILENAME:結果 PEM 編碼憑證鏈結檔案的寫入位置。憑證鏈結的順序為從分葉到根。
DNS_NAME:一或多個以半形逗號分隔的 DNS 主體別名 (SAN)。
--generate-key
旗標會在您的電腦上產生新的 RSA-2048 私密金鑰。
如要使用憑證簽署要求 (CSR) 向 CA 集區中的 CA 要求憑證,或進一步瞭解如何要求憑證,請參閱「要求憑證並查看已核發的憑證」。
複製憑證授權單位
如要複製現有 CA 來續約,或建立具有相同設定的新 CA,請執行下列指令:
gcloud privateca roots create NEW_CA_ID \
--location=LOCATION \
--pool=POOL_ID \
--from-ca=EXISTING_CA_ID \
--key-algorithm "ec-p384-sha384"
更改下列內容:
- NEW_CA_ID:新 CA 的專屬 ID。
- LOCATION:CA 集區的位置。
- POOL_ID:要建立新 CA 的 CA 集區名稱。
- EXISTING_CA_ID:來源 CA 的 ID 或來源 CA 的完整 ID。
--from-ca
旗標支援建立根 CA 和從屬 CA。現有 CA 必須與新 CA 位於相同 CA 集區。
--key-algorithm
旗標會從現有 CA 複製所有 CA 設定 (Cloud KMS 金鑰版本和 Cloud Storage bucket 除外)。不過,您仍可明確提供適當的旗標,覆寫新 CA 中的任何設定值。舉例來說,您仍可指定 `--subject SUBJECT 來使用新主旨。
如果省略 --key-algorithm
標記,演算法預設會使用:
rsa-pkcs1-4096-sha256
。rsa-pkcs1-2048-sha256
,適用於從屬 CA。
如要進一步瞭解這個 gcloud
指令,請參閱 gcloud privateca roots create。