このチュートリアルでは、Certificate Manager を使用して、Certificate Authority Service でグローバル Google マネージド証明書をクロスリージョン内部アプリケーション ロードバランサにデプロイする方法について説明します。
グローバル外部ロードバランサまたはリージョン ロードバランサにデプロイする場合は、以下をご覧ください。
目標
このチュートリアルでは、次のタスクを行う方法を説明します。
- Certificate Manager を使用して、CA Service で Google マネージド証明書を作成する。
- ターゲット HTTPS プロキシを使用して、サポートされているロードバランサに証明書をデプロイします。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init - CA Service API を有効にします。
- CA プールを作成します。この CA プールに少なくとも 1 つの CA を作成して有効にする必要があります。
- Certificate Authority Service で作成した証明書は、公的に信頼されていません。公的に信頼できる証明書を発行するには、DNS 認証またはロードバランサ認証を使用して証明書を作成します。
証明書の発行ポリシーがターゲット CA プールで有効になっている場合、証明書のプロビジョニングが次のいずれかの理由で失敗することがあります。
- 証明書発行ポリシーによって、要求された証明書がブロックされている。 この場合、証明書が発行されていないため、課金されません。
- このポリシーで、Certificate Manager でサポートされていない証明書に対する変更が適用されている。この場合、Certificate Manager との完全な互換性がなくても、証明書が発行されているため、請求が発生します。
グローバル Google マネージド TLS 証明書は、任意のリージョンの CA プールから発行されるように構成できます。
Certificate Manager オーナー(
roles/certificatemanager.owner)Certificate Manager リソースの作成と管理に必要です。
Compute ロードバランサ管理者(
roles/compute.loadBalancerAdmin)または Compute ネットワーク管理者(roles/compute.networkAdmin)HTTPS ターゲット プロキシの作成と管理に必要です。
CA Service 管理者(
roles/privateca.admin)CA Service 内でアクションを実行するために必要です。
- Certificate Manager のロールと権限。
- Compute Engine の Compute Engine の IAM ロールと権限。
- CA Service の IAM を使用したアクセス制御。
ターゲット Google Cloud プロジェクトで、Certificate Manager サービス アカウントを作成します。
gcloud beta services identity create --service=certificatemanager.googleapis.com \ --project=PROJECT_IDPROJECT_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 プールの完全なリソースパスと名前。
証明書発行構成リソースの詳細については、証明書発行構成リソースを管理するをご覧ください。
Google Cloud コンソールで、[Certificate Manager] ページに移動します。
[証明書] タブで、[証明書を追加] をクリックします。
[証明書名] フィールドに、証明書の一意の名前を入力します。
省略可: [説明] フィールドに証明書の説明を入力します。説明は、証明書を識別するために使用します。
[ロケーション] で [グローバル] を選択します。
[スコープ] で [すべてのリージョン] を選択します。
[証明書の種類] で [Google マネージド証明書を作成する] を選択します。
[認証局のタイプ] で [プライベート] を選択します。
[ドメイン名] フィールドに、証明書のドメイン名をカンマ区切りで指定します。各ドメイン名は完全修飾ドメイン名(
myorg.example.comなど)にする必要があります。[証明書発行の設定を選択する] で、ターゲット CA プールを参照する証明書発行の構成リソースの名前を選択します。
[ラベル] フィールドで、証明書に関連付けるラベルを指定します。ラベルを追加するには、[ラベルを追加] をクリックして、ラベルのキーと値を指定します。
[作成] をクリックします。
新しい証明書が証明書のリストに表示されます。
CERTIFICATE_NAME: 証明書の名前。DOMAIN_NAME: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.comなど)にする必要があります。ISSUANCE_CONFIG_NAME: ターゲット CA プールを参照する証明書発行構成リソースの名前。PROJECT_ID: Google Cloud プロジェクトの IDCERTIFICATE_NAME: 証明書の名前。DOMAIN_NAME: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.comなど)にする必要があります。ISSUANCE_CONFIG_NAME: ターゲット CA プールを参照する証明書発行構成リソースの名前。Google Cloud コンソールで、[Certificate Manager] ページに移動します。
[証明書] タブで、証明書の [ステータス] 列を確認します。
PROXY_NAME: ターゲット プロキシの名前URL_MAP: URL マップの名前。ロードバランサの作成時に URL マップを作成しました。CERTIFICATE_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 プールを削除するをご覧ください。
このチュートリアルの手順を行う前に、次の点に注意してください。
必要なロール
このチュートリアルのタスクを完了するための次のロールがあることを確認してください。
詳しくは以下をご覧ください。
ロードバランサを作成する
このチュートリアルでは、ロードバランサのバックエンド、ヘルスチェック、バックエンド サービス、URL マップがすでに作成され、構成されていることを前提としています。このチュートリアルの後半で必要になるため、URL マップの名前をメモしておきます。
クロスリージョン内部アプリケーション ロードバランサを作成していない場合は、VM インスタンス グループのバックエンドを使用してクロスリージョン内部アプリケーション ロードバランサを設定するをご覧ください。
CA Service と Certificate Manager の統合を構成する
CA Service と Certificate Manager を統合する手順は次のとおりです。
CA Service インスタンスによって発行された Google マネージド証明書を作成する
CA Service インスタンスによって発行された Google マネージド証明書を作成するには、次の操作を行います。
コンソール
gcloud
Certificate Authority Service を使用してクロスリージョン Google マネージド証明書を作成するには、issuance-config フラグと --scope フラグを指定して certificate-manager certificates create コマンドを使用します。
gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAMES" \
--issuance-config=ISSUANCE_CONFIG_NAME \
--scope=all-regions
以下を置き換えます。
API
次のように、certificates.create メソッドに POST リクエストを送信して証明書を作成します。
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
"managed": {
"domains": ["DOMAIN_NAME"],
"issuanceConfig": "ISSUANCE_CONFIG_NAME",
"scope": "ALL_REGIONS"
}
}
次のように置き換えます。
証明書のステータスを確認する
証明書をロードバランサにデプロイする前に、証明書が有効であることを確認します。証明書の状態が ACTIVE に変わるまで数分かかることがあります。
コンソール
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 compute
target-https-proxies create コマンドを使用します。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP \
--certificate-manager-certificates=CERTIFICATE_NAME \
--global
以下を置き換えます。
証明書を既存のターゲット HTTPS プロキシに接続するには、gcloud
compute target-https-proxies update コマンドを使用します。既存のターゲット プロキシの名前がわからない場合は、[ターゲット プロキシ] ページに移動して、ターゲット プロキシの名前を確認します。
gcloud compute target-https-proxies update PROXY_NAME \
--global \
--certificate-manager-certificates=CERTIFICATE_NAME
ターゲット プロキシを作成または更新したら、次のコマンドを実行して確認します。
gcloud compute target-https-proxies list
CA Service によって発行された証明書のトラブルシューティング
トラブルシューティングの手順については、CA Service インスタンスによって発行された証明書に関連する問題をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて Google Cloud アカウントに課金されないようにするには、リソースを削除します。