使用 Google Cloud CLI 簽發憑證

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

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

事前準備

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

    gcloud init

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

  • Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  • Enable the Certificate Authority Service API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable privateca.googleapis.com

  • Verify that billing is enabled for your Google Cloud project.

  • 設定預設位置,以便在本快速入門導覽中搭配 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 集區的位置。如需完整的位置清單,請參閱「位置」。

所有 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 或企業。

選用:建立由 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. 刪除專案。

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

後續步驟