使用 Google Cloud CLI 簽發憑證

本頁說明如何使用 Google Cloud CLI,透過憑證授權單位服務產生或核發憑證。

透過 CA Service,您可以部署及管理私人 CA,不必費心管理基礎架構。

事前準備

  • 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 建立或選取 Google Cloud 專案

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要「專案建立者」角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
    • 建立 Google Cloud 專案:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替換為您要建立的 Google Cloud 專案名稱。

    • 選取您建立的 Google Cloud 專案:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替換為 Google Cloud 專案名稱。

  • 啟用憑證授權單位服務 API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable privateca.googleapis.com

  • 確認專案已啟用計費功能 Google Cloud

  • 設定預設位置,以便在本快速入門指南中使用 gcloud 指令。

    gcloud config set privateca/location LOCATION
    

    CA 服務資源 (例如 CA 集區和 CA) 位於單一Google Cloud 位置,建立這些資源後就無法變更。

建立憑證授權單位集區

憑證授權單位 (CA) 集區內含多個 CA。CA 集區提供信任鏈結輪替功能,而且可在無任何工作負載服務中斷或停機情形的情況下輪替鏈結。

如要在 Enterprise 方案中建立 CA 集區,請執行下列指令:

gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"

更改下列內容:

  • POOL_ID:CA 集區的名稱
  • LOCATION:CA 集區的位置。如需完整的位置清單,請參閱「位置」。

資源名稱可包含字母、數字、連字號 (-) 和底線 (_),長度上限為 63 個字元。

建立根 CA

建立 CA 集區時,集區中沒有任何內容。如要向 CA 集區要求憑證,您必須在其中新增 CA。

如要建立根 CA 並新增至您建立的 CA 集區,請執行下列指令:

gcloud privateca roots create CA_ID --pool POOL_ID --location LOCATION --subject "CN=Example Prod Root CA,O=Google"

更改下列內容:

  • CA_ID:根 CA 的名稱
  • POOL_ID:CA 集區的名稱
  • LOCATION:CA 集區的位置。如需完整的位置清單,請參閱「位置」。

CA 服務建立根 CA 時,會傳回下列輸出內容:

Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]

在 gcloud CLI 提示時輸入 y,啟用根 CA。

選用:建立從屬 CA 集區

如要建立下層 CA 集區,請執行下列指令:

    gcloud privateca pools create SUBORDINATE_POOL_ID
        --location LOCATION
        --tier TIER

更改下列內容:

  • SUBORDINATE_POOL_ID:下層 CA 集區的 ID
  • LOCATION:從屬 CA 集區的位置。 如需完整地點清單,請參閱「地點」。
  • TIER:從屬 CA 層級,可以是 devops 或 enterprise

選用:建立由 Google Cloud中儲存的根 CA 簽署的從屬 CA

如要在上一步建立的下層 CA 集區中建立下層 CA,請執行下列指令:

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
        --location=LOCATION \
        --pool=SUBORDINATE_POOL_ID \
        --issuer-pool=POOL_ID \
        --issuer-location=ISSUER_LOCATION \
        --from-ca=EXISTING_CA_ID \
        --kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION

更改下列內容:

  • SUBORDINATE_CA_ID:從屬 CA 的 ID
  • LOCATION:從屬 CA 的位置,如需完整的位置清單,請參閱「位置」。
  • SUBORDINATE_POOL_ID:您在上一個章節中建立的下層 CA 集區 ID
  • POOL_ID:上層 CA 集區的 ID
  • ISSUER_LOCATION:憑證位置
  • EXISTING_CA_ID:來源 CA 的 ID
  • PROJECT_ID:專案 ID
  • LOCATION_ID:金鑰環的位置
  • KEY_RING:金鑰所在的金鑰環名稱
  • KEY:金鑰名稱
  • KEY_VERSION:金鑰版本

建立從屬 CA 時,系統會傳回下列陳述式。

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].

在 gcloud CLI 提示時輸入 y,啟用從屬 CA。

建立憑證

如要使用新建立的 CA 建立憑證,請按照下列步驟操作:

  1. 使用 pip 指令安裝 Pyca 密碼編譯程式庫。

      pip install --user "cryptography>=2.2.0"
    

    CA 服務會使用 Pyca 密碼學程式庫,在本機產生及儲存新的非對稱金鑰組。這個金鑰絕不會傳送至 CA 服務。

  2. 如要允許 Google Cloud SDK 使用 Pyca 密碼編譯程式庫,請啟用網站套件。

    macOS 或 Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. 建立憑證。

      gcloud privateca certificates create \
          --issuer-pool POOL_ID \
          --issuer-location ISSUER_LOCATION \
          --subject "CN=Example Prod,O=Google" \
          --generate-key \
          --key-output-file=./key \
          --cert-output-file=./cert.pem
    

    更改下列內容:

    • POOL_ID:您建立的 CA 集區資源 ID
    • ISSUER_LOCATION:核發數位憑證的憑證授權單位位置

    CA 服務會傳回下列回應:

    Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
    

清除所用資源

如要清理所用資源,請刪除您在本快速入門導覽課程中建立的 CA 集區、CA 和專案。

  1. 撤銷憑證。

      如要撤銷憑證,請執行下列指令:

       gcloud privateca certificates revoke --certificate CERT_NAME --issuer-pool POOL_ID --location 
      LOCATION
        

      請替換下列項目:

      • CERT_NAME:要撤銷的憑證名稱
      • POOL_ID:核發憑證的 CA 集區名稱
      • LOCATION:CA 集區的位置
  2. 刪除 CA。

    您只能在撤銷 CA 核發的所有憑證後,才能刪除該 CA。

    1. 停用 CA。

      gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
      

      更改下列內容:

      • CA_ID:CA 的資源 ID
      • POOL_ID:CA 集區的資源 ID
      • LOCATION:CA 集區的位置。如需完整的位置清單,請參閱「位置」。
    2. 刪除 CA。

      gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
      

    CA 狀態會變更為 Deleted。發起刪除作業後,憑證授權單位服務會在 30 天後永久刪除憑證授權單位。

  3. 刪除 CA 集區。

    只有在永久刪除 CA 集區中的 CA 後,才能刪除該集區。

    gcloud privateca pools delete POOL_ID --location=LOCATION
    
  4. 刪除專案。

    刪除 Google Cloud 專案:

    gcloud projects delete PROJECT_ID

後續步驟