使用公開 CA 和 ACME 用戶端要求憑證

本教學課程會逐步說明如何使用 Google Cloud CLI,向公開憑證授權單位要求 TLS 憑證。如要瞭解 Public Certificate Authority 使用的根 CA 和中繼 CA,請參閱 Google Trust Services。向公開 CA 要求憑證不會產生任何費用。

事前準備

  • After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  • Create or select a Google Cloud project.

    • 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.

  • 確認您具備「Public CA External Account Key Creator」(公開 CA 外部帳戶金鑰建立者) (roles/publicca.externalAccountKeyCreator) IAM 角色。

    如要授予這個角色,請執行下列指令:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:USER \
      --role=roles/publicca.externalAccountKeyCreator
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案 ID
    • USER:要指派 IAM 角色的使用者專屬 ID

    如要瞭解如何授予 IAM 角色,請參閱「管理專案、資料夾和機構的存取權」一文。

  • Enable the Public CA API:

    gcloud services enable publicca.googleapis.com

安裝用戶端

如要開始使用公開 CA,請先安裝 ACME 用戶端。下列操作說明使用 Certbot 做為 ACME 用戶端。只要 ACME 用戶端支援外部帳戶繫結 (EAB),您就可以使用其他用戶端。

如要安裝 Certbot,請參閱 Certbot 操作說明

請務必將用戶端指向公開 CA 伺服器。ACME 用戶端首次與公開 CA 互動時,會產生新的金鑰組,並將公開金鑰傳送至公開 CA。

要求 EAB 金鑰 ID 和 HMAC

安裝 ACME 用戶端後,您必須向公開 CA 註冊 ACME 帳戶,才能向公開 CA 申請憑證。EAB 密鑰可協助您向公開 CA 註冊 ACME 帳戶。EAB 密鑰包含金鑰 ID 和雜湊式訊息驗證碼 (HMAC)。

您可以使用 Public CA APIGoogle Cloud CLI 要求 EAB 密鑰。

如要要求 EAB 金鑰 ID 和 HMAC,請執行下列指令:

gcloud publicca external-account-keys create

這個指令會傳回在 Public CA 的正式版環境中有效的 EAB 密碼。在回應主體中,keyId 欄位包含 EAB 金鑰 ID,b64MacKey 欄位則包含 EAB HMAC。

您必須在取得 EAB 密鑰後的 7 天內使用。如果未在 7 天內使用 EAB 密鑰,該密鑰就會失效。使用 EAB 密鑰註冊的 ACME 帳戶不會過期。

註冊 ACME 帳戶

本節說明如何提供您剛取得的 EAB 密碼,向公開 CA 註冊 ACME 帳戶。

使用一般 ACME 用戶端註冊 ACME 帳戶,並在註冊時提供 EAB 金鑰 ID 和 HMAC。

如要向公開 CA 註冊 ACME 帳戶,並將 ACME 帳戶繫結至用於要求 EAB 密鑰的 Google Cloud 專案,請執行下列指令:

certbot register \
    --email "EMAIL_ADDRESS" \
    --no-eff-email \
    --server "SERVER" \
    --eab-kid "EAB_KID" \
    --eab-hmac-key "EAB_HMAC_KEY"

更改下列內容:

  • EMAIL_ADDRESS:您的電子郵件地址
  • SERVER:正式版或測試環境的 ACME 目錄網址
  • EAB_KID:EAB 金鑰 ID
  • EAB_HMAC_KEY:EAB HMAC 金鑰

下表提供正式版和預先發布環境的說明和 ACME 目錄網址:

環境 說明 ACME 目錄網址
Production 正式版環境可讓您取得公開信任的憑證。 https://dv.acme-v02.api.pki.goog/directory
預備 測試環境會傳回受公眾信任的憑證。 預備環境會執行與正式環境相同的驗證檢查。您可以使用預備環境進行整合或其他任何類型的測試。 https://dv.acme-v02.test-api.pki.goog/directory

您只能使用 EAB 密碼註冊一個 ACME 帳戶。使用 EAB 密鑰註冊 ACME 帳戶後,EAB 密鑰就會失效,無法重複使用。如要註冊多個 ACME 帳戶,請為每個帳戶申請專屬的 EAB 密鑰。

要求憑證

公開 CA 驗證您對憑證目標的控制權,並確認 ACME 用戶端可正常執行憑證管理作業後,您就能使用一般 ACME 工作流程要求、續約及撤銷憑證。您可以使用 ACME 用戶端執行這些作業。如要申請及續約憑證,您必須完成 ACME 驗證,例如手動 DNS 驗證。

如要使用手動 DNS 驗證要求憑證,請執行下列指令:

certbot certonly \
    --manual \
    --preferred-challenges "dns-01" \
    --server "SERVER" \
    --domains "DOMAINS"

更改下列內容:

  • SERVER:正式版或預先發布環境的 ACME 目錄網址
  • DOMAINS:以半形逗號分隔的網域清單,當中列有您要申請憑證的網域

清除所用資源

如果不再需要網域的憑證,請刪除您建立的專案。

預備

您可以使用 Public CA 的暫存環境,要求用於測試的憑證。測試環境核發的憑證會鏈結至測試根 CA。 如果瀏覽器或其他用戶端未設定為信任測試環境根憑證,就不會信任測試環境的憑證。如要取得在暫存環境中有效的 EAB 密鑰,請覆寫 API 端點,改用暫存環境的端點:

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
接著執行帳戶金鑰建立指令,建立暫存金鑰:
gcloud publicca external-account-keys create
如要還原為實際工作環境的端點,請執行下列指令:
gcloud config unset api_endpoint_overrides/publicca

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

後續步驟