Public CA と ACME クライアントを使用して証明書をリクエストする
このチュートリアルでは、Google Cloud CLI を使用して Public Certificate Authority で TLS 証明書をリクエストする方法について説明します。Public Certificate Authority によって使用されるルート CA と中間 CA については、Google Trust Services をご覧ください。Public CA からの証明書のリクエストには課金されません。
準備
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
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.
-
IAM オーナー(
roles/owner
)またはPublic CA 外部アカウントキー作成者(publicca.externalAccountKeyCreator
)の IAM ロールがあることを確認します。Public CA 外部アカウントキー作成者(
publicca.externalAccountKeyCreator
)IAM ロールを付与するには、次のコマンドを実行します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USER \ --role=roles/publicca.externalAccountKeyCreator
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの IDUSER
: IAM のロールを割り当てるユーザーの一意の識別子
IAM ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
Enable the Public CA API:
gcloud services enable publicca.googleapis.com
クライアントをインストールする
Public CA の使用を開始するには、ACME クライアントをインストールする必要があります。次の手順では、Certbot を ACME クライアントとして使用します。クライアントが外部アカウント バインディング(EAB)をサポートしている場合は、他の ACME クライアントを使用できます。
Certbot をインストールするには、Certbot の手順をご覧ください。
クライアントが Public CA サーバーを参照していることを確認してください。ACME クライアントが初めて Public CA を操作すると、クライアントは新しい鍵ペアを生成し、公開鍵を Public CA に送信します。
EAB 鍵 ID と HMAC をリクエストする
ACME クライアントをインストールしたら、ACCA アカウントを Public CA に登録して、Public CA に証明書をリクエストする必要があります。ACAB Secret は、ACME アカウントを Public CA に登録する際に役立ちます。EAB Secret は、鍵 ID とハッシュベースのメッセージ認証コード(HMAC)で構成されます。
Public CA API または Google Cloud CLI を使用して、EAB Secret をリクエストできます。
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 を指定します。
ACME アカウントを Public CA に登録し、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 ディレクトリ URLEAB_KID
: EAB 鍵 IDEAB_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 ディレクトリ URLDOMAINS
: 証明書をリクエストするドメインのカンマ区切りのリスト
クリーンアップ
ドメインの証明書が不要になった場合は、作成したプロジェクトを削除します。
ステージング
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
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID