Public CA と ACME クライアントを使用して証明書をリクエストする

このチュートリアルでは、Google Cloud CLI を使用して Public Certificate Authority で TLS 証明書をリクエストする方法について説明します。Public Certificate Authority によって使用されるルート CA と中間 CA については、Google Trust Services をご覧ください。Public CA からの証明書のリクエストには課金されません。

始める前に

  • Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

    gcloud init

    外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  • Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  • Public 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 ロールを割り当てるユーザーの固有識別子

    IAM ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

  • Public CA API が有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable publicca.googleapis.com

クライアントをインストールする

Public CA の使用を開始するには、ACME クライアントをインストールする必要があります。次の手順では、ACME クライアントとして Certbot を使用します。クライアントが外部アカウント バインディング(EAB)をサポートしている場合は、他の ACME クライアントを使用できます。

Certbot をインストールするには、Certbot の手順をご覧ください。

クライアントが Public CA サーバーを参照していることを確認してください。ACME クライアントが初めて Public CA を操作すると、クライアントは新しい鍵ペアを生成し、公開鍵を Public CA に送信します。

EAB 鍵 ID と HMAC をリクエストする

ACME クライアントをインストールしたら、Public CA に ACME アカウントを登録して、Public CA から証明書をリクエストする必要があります。ACAB Secret は、ACME アカウントを Public CA に登録する際に役立ちます。EAB シークレットは、鍵 ID とハッシュベースのメッセージ認証コード(HMAC)で構成されます。

EAB シークレットをリクエストするには、Public CA API または Google Cloud CLI を使用します。

EAB 鍵 ID と HMAC をリクエストするには、次のコマンドを実行します。

gcloud publicca external-account-keys create

このコマンドは、Public CA の本番環境で有効な EAB Secret を返します。レスポンスの本文の keyId フィールドには EAB 鍵 ID が含まれ、b64MacKey フィールドには EAB HMAC が含まれます。

EAB Secret は、取得後 7 日以内に使用する必要があります。EAB Secret は、7 日以内に使用しないと無効になります。EAB Secret を使用して登録された ACME アカウントには有効期限がありません。

ACME アカウントを登録する

このセクションでは、取得した EAB Secret を指定して、ACME アカウントを Public CA に登録する方法について説明します。

通常の ACME クライアントを使用して ACME アカウントを登録し、登録中に EAB 鍵 ID と HMAC を指定します。

Public CA に ACME アカウントを登録し、ACME アカウントを EAB Secret のリクエストに使用した 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 ディレクトリ URL
  • EAB_KID: EAB キー ID
  • EAB_HMAC_KEY: EAB HMAC 鍵

次の表に、本番環境とステージング環境の説明と ACME ディレクトリの URL を示します。

環境 説明 ACME ディレクトリの URL
本番環境 本番環境では、公的に信頼できる証明書を取得できます。 https://dv.acme-v02.api.pki.goog/directory
ステージング ステージング環境は、公的に信頼できない証明書を返します。 ステージング環境では、本番環境と同じ検証チェックが実行されます。ステージング環境は、統合テストやその他のテストに使用できます。 https://dv.acme-v02.test-api.pki.goog/directory

EAB Secret に登録できる ACME アカウントは 1 つのみです。EAB Secret を使用して ACME アカウントを登録すると、EAB Secret は無効になり、再利用できなくなります。複数の ACME アカウントを登録する場合は、アカウントごとに一意の EAB Secret をリクエストする必要があります。

証明書をリクエストする

Public CA が証明書ターゲットの管理を検証し、ACME クライアントが証明書管理オペレーションを意図したとおりに実行することを確認したら、通常の ACME ワークフローを使用して証明書のリクエスト、更新、取り消しを行うことができます。これらの操作は ACME クライアントを使用して実行できます。証明書をリクエストして更新するには、手動 DNS チャレンジなどの ACME チャレンジを完了する必要があります。

手動 DNS チャレンジを使用して証明書をリクエストするには、次のコマンドを実行します。

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

以下のように置き換えます。

  • SERVER: 本番環境またはステージング環境の ACME ディレクトリ URL
  • DOMAINS: 証明書をリクエストするドメインのカンマ区切りリスト

クリーンアップ

ドメインの証明書が不要になった場合は、作成したプロジェクトを削除します。

ステージング

Public CA のステージング環境を使用して、テスト用の証明書をリクエストできます。ステージング環境によって発行された証明書は、テストルート CA までチェーンされます。ステージング環境の証明書は、ステージング ルート証明書を信頼するように構成されていないブラウザやその他のクライアントでは信頼されません。ステージング環境で有効な EAB Secret を取得するには、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

Google Cloud プロジェクトを削除する:

gcloud projects delete PROJECT_ID

次のステップ