このチュートリアルでは、Certificate Manager を使用して、Certificate Authority Service でグローバル Google マネージド証明書をデプロイする方法について説明します。
次のグローバル ロードバランサは、Certificate Authority Service による Google マネージド証明書をサポートしています。
- グローバル外部アプリケーション ロードバランサ
- 従来のアプリケーション ロードバランサ
- グローバル外部プロキシ ネットワーク ロードバランサ
クロスリージョン ロードバランサまたはリージョン ロードバランサにデプロイする場合は、以下をご覧ください。
CA Service と Certificate Manager の統合を構成する
CA Service と Certificate Manager を統合する手順は次のとおりです。
ターゲット Google Cloud プロジェクトで、Certificate Manager サービス アカウントを作成します。
gcloud beta services identity create --service=certificatemanager.googleapis.com \ --project=PROJECT_ID
PROJECT_ID
は、ターゲットGoogle Cloud プロジェクトの ID に置き換えます。このコマンドは、作成されたサービス ID の名前を返します。次の例をご覧ください。
service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
Certificate Manager サービス アカウントに、ターゲット CA プール内の CA Service 証明書リクエスト元ロール(
roles/privateca.certificateRequester
)を付与します。gcloud privateca pools add-iam-policy-binding CA_POOL \ --location LOCATION \ --member "serviceAccount:SERVICE_ACCOUNT" \ --role roles/privateca.certificateRequester
以下を置き換えます。
CA_POOL
: ターゲット CA プールの ID。LOCATION
: ターゲット Google Cloud ロケーション。SERVICE_ACCOUNT
: ステップ 1 で作成したサービス アカウントのフルネーム。
CA プールの証明書発行の構成リソースを作成します。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページの [発行構成] タブに移動します。
[作成] をクリックします。[証明書発行の構成を作成] ページが表示されます。
[名前] フィールドに、証明書発行構成の一意の名前を入力します。
省略可: [説明] フィールドに、発行構成の説明を入力します。
[ロケーション] で [グローバル] を選択します。
省略可: [存続期間] フィールドに、発行する証明書の存続期間を日数で指定します。値は 21~30 日の範囲で指定してください。
省略可: [ローテーション時間枠の割合] で、更新プロセスを開始するときの証明書の存続期間の割合を指定します。有効な値の範囲については、存続期間とローテーション時間枠の割合をご覧ください。
省略可: [鍵アルゴリズム] リストから、秘密鍵の生成時に使用する鍵アルゴリズムを選択します。
[CA プール] リストから、この証明書発行の構成リソースに割り当てる CA プールの名前を選択します。
[ラベル] フィールドで、証明書に関連付けるラベルを指定します。ラベルを追加するには、[
ラベルを追加] をクリックして、ラベルのキーと値を指定します。[作成] をクリックします。
gcloud
gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \ --ca-pool=CA_POOL
以下を置き換えます。
ISSUANCE_CONFIG_NAME
: 証明書発行構成リソースの名前。CA_POOL
: この証明書発行構成リソースに割り当てる CA プールの完全なリソースパスと名前。
証明書発行構成リソースの詳細については、証明書発行構成リソースを管理するをご覧ください。
CA Service インスタンスによって発行された Google マネージド証明書を作成する
CA Service インスタンスによって発行された Google マネージド証明書を作成するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページに移動します。
[証明書] タブで、[証明書を追加] をクリックします。
[証明書名] フィールドに、証明書の一意の名前を入力します。
省略可: [説明] フィールドに証明書の説明を入力します。説明は、証明書を識別するために使用します。
[ロケーション] で [グローバル] を選択します。
[範囲] で [デフォルト] を選択します。
[証明書の種類] で [Google マネージド証明書を作成する] を選択します。
[認証局のタイプ] で [プライベート] を選択します。
[ドメイン名] フィールドに、証明書のドメイン名をカンマ区切りで指定します。各ドメイン名は完全修飾ドメイン名(
myorg.example.com
など)にする必要があります。[証明書発行の設定を選択する] で、ターゲット CA プールを参照する証明書発行の構成リソースの名前を選択します。
[ラベル] フィールドで、証明書に関連付けるラベルを指定します。ラベルを追加するには、[
ラベルを追加] をクリックして、ラベルのキーと値を指定します。[作成] をクリックします。
新しい証明書が証明書のリストに表示されます。
gcloud
Certificate Authority Service を使用してグローバル Google マネージド証明書を作成するには、issuance-config
フラグを指定して certificate-manager certificates create
コマンドを使用します。
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES" \ --issuance-config=ISSUANCE_CONFIG_NAME
以下を置き換えます。
CERTIFICATE_NAME
: 証明書の名前。DOMAIN_NAME
: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。ISSUANCE_CONFIG_NAME
: ターゲット CA プールを参照する証明書発行構成リソースの名前。
API
次のように、certificates.create
メソッドに POST
リクエストを送信して証明書を作成します。
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], "issuanceConfig": "ISSUANCE_CONFIG_NAME", } }
次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの IDCERTIFICATE_NAME
: 証明書の名前。DOMAIN_NAME
: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。ISSUANCE_CONFIG_NAME
: ターゲット CA プールを参照する証明書発行構成リソースの名前。
証明書のステータスを確認する
証明書をロードバランサにデプロイする前に、証明書が有効であることを確認します。証明書の状態が ACTIVE
に変わるまで数分かかることがあります。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページに移動します。
[証明書] タブで、証明書の [ステータス] 列を確認します。
gcloud
証明書のステータスを確認するには、次のコマンドを実行します。
gcloud certificate-manager certificates describe CERTIFICATE_NAME
CERTIFICATE_NAME
は、ターゲット Google マネージド証明書の名前に置き換えます。
出力は次のようになります。
createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: domains: - myorg.example.com issuanceConfig: projects/myproject/locations/global/issuanceConfigs/myissuanceConfig state: ACTIVE name: projects/myproject/locations/global/certificates/mycertificate pemCertificate: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- sanDnsnames: - myorg.example.com updateTime: '2021-10-20T12:19:55.083385630Z'
その他のトラブルシューティングの手順については、Certificate Manager のトラブルシューティングをご覧ください。
証明書をロードバランサにデプロイする
グローバル Google マネージド証明書をデプロイするには、証明書マップを使用します。
証明書マップを作成する
証明書に関連付けられた証明書マップエントリを参照する証明書マップを作成します。
gcloud
証明書マップを作成するには、gcloud certificate-manager maps create
コマンドを使用します。
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
CERTIFICATE_MAP_NAME
は、ターゲット証明書マップの名前に置き換えます。
Terraform
証明書マップを作成するには、google_certificate_manager_certificate_map
リソースを使用します。
証明書マップエントリを作成する
証明書マップエントリを作成し、証明書と証明書マップに関連付けます。
gcloud
証明書マップエントリを作成するには、gcloud certificate-manager maps entries create
コマンドを使用します。
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
以下を置き換えます。
CERTIFICATE_MAP_ENTRY_NAME
: 証明書マップ エントリの名前。CERTIFICATE_MAP_NAME
: 証明書マップエントリが添付されている証明書マップの名前。CERTIFICATE_NAME
: 証明書マップエントリに関連付ける証明書の名前。HOSTNAME
: 証明書マップエントリに関連付けるホスト名。ワイルドカード ドメインとルートドメインの両方をカバーする証明書を作成する場合は、
example.com
や*.example.com
など、ルートとワイルドカードを使用してホスト名を指定します。また、example.com
用と*.example.com
用の 2 つの証明書マップエントリを指定する必要があります。
Terraform
ルートドメインを使用して証明書マップエントリを作成するには、google_certificate_manager_certificate_map_entry
リソースを使用します。
ワイルドカード ドメインを使用して証明書マップエントリを作成するには、google_certificate_manager_certificate_map_entry
リソースを使用します。
証明書マップエントリが有効であることを確認する
証明書マップエントリに対応する証明書マップをターゲット プロキシに接続する前に、証明書マップエントリが有効であることを確認します。
証明書マップエントリを確認するには、gcloud certificate-manager maps entries describe
コマンドを使用します。
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
以下を置き換えます。
CERTIFICATE_MAP_ENTRY_NAME
: 証明書マップ エントリの名前。CERTIFICATE_NAME
: 証明書マップエントリに関連付ける証明書の名前。
出力は次のようになります。
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
証明書マップをターゲット プロキシに添付する
証明書マップは、新しいターゲット プロキシまたは既存のターゲット プロキシに接続できます。
gcloud
証明書マップを新しいターゲット プロキシに添付するには、gcloud compute target-https-proxies create
コマンドを使用します。
gcloud compute target-https-proxies create PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --url-map="URL_MAP" \ --global
以下を置き換えます。
PROXY_NAME
: ターゲット プロキシの名前CERTIFICATE_MAP_NAME
: 証明書マップエントリと関連する証明書を参照する証明書マップの名前。URL_MAP
: URL マップの名前。
証明書マップを既存のターゲット HTTPS プロキシに添付するには、gcloud compute target-https-proxies update
コマンドを使用します。既存のターゲット プロキシの名前がわからない場合は、[ターゲット プロキシ] ページに移動して、ターゲット プロキシの名前を確認します。
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
ターゲット プロキシを作成または更新したら、次のコマンドを実行して確認します。
gcloud compute target-https-proxies list
Terraform
証明書マップをターゲット プロキシに添付するには、google_compute_target_https_proxy
リソースを使用します。
ターゲット プロキシを構成するときに、TLS(SSL)証明書を直接添付し、証明書マップを介して添付すると、プロキシは証明書マップで参照される証明書を使用し、直接添付された TLS(SSL)証明書を無視します。
CA Service によって発行された証明書のトラブルシューティング
トラブルシューティングの手順については、CA Service インスタンスによって発行された証明書に関連する問題をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて Google Cloud アカウントに課金されないようにするには、リソースを削除します。
ロードバランサとそのリソースを削除します。
ロード バランシングの設定をクリーンアップするをご覧ください。
証明書マップを削除するか、プロキシから切断します。
証明書マップを削除するには、次のコマンドを実行します。
gcloud compute target-https-proxies delete PROXY_NAME
ターゲット HTTPS プロキシを保持する場合は、証明書マップをプロキシから切り離します。
- プロキシに直接 TLS(SSL)証明書が添付されている場合、証明書マップを切断すると、プロキシは直接添付された TLS(SSL)証明書を使用して再開します。
- プロキシに直接 TLS(SSL)証明書が添付されていない場合、証明書マップをプロキシから切断することはできません。証明書マップを切断するには、まず少なくとも 1 つの TLS(SSL)証明書をプロキシに直接添付する必要があります。
証明書マップを切断するには、次のコマンドを実行します。
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
PROXY_NAME
は、ターゲット プロキシの名前に置き換えます。証明書マップから証明書マップエントリを削除します。
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
以下を置き換えます。
CERTIFICATE_MAP_ENTRY_NAME
: 証明書マップ エントリの名前。CERTIFICATE_MAP_NAME
: 証明書マップの名前。
証明書マップを削除します。
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
CERTIFICATE_MAP_NAME
は、証明書マップの名前に置き換えます。Google マネージド証明書を削除します。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページに移動します。
[証明書] タブで、証明書のチェックボックスをオンにします。
[削除] をクリックします。
表示されたダイアログで、[削除] をクリックして確定します。
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME
CERTIFICATE_NAME
は、ターゲット証明書の名前に置き換えます。証明書発行の構成リソースを削除します。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページの [発行構成] タブに移動します。
削除する発行構成リソースのチェックボックスをオンにします。
[削除] をクリックします。
表示されたダイアログで、[削除] をクリックして確定します。
gcloud
gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
ISSUANCE_CONFIG_NAME
は、ターゲットの証明書発行構成リソースの名前に置き換えます。CA プールを削除します。
CA プールを削除する場合や、証明書発行構成リソースで参照されている CA プールで最後に有効にした CA を無効にする場合、CA プールを参照するすべての証明書発行構成リソースを削除します。詳細については、CA プールを削除するをご覧ください。