このチュートリアルでは、Certificate Manager を使用して、CA Service を使用してリージョンの Google マネージド証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイする方法について説明します。
目標
このチュートリアルでは、次のタスクを行う方法を説明します。
- Certificate Manager を使用して、CA Service で Google マネージド証明書を作成する。
- ターゲット HTTPS プロキシを使用して、サポートされているロードバランサに証明書をデプロイします。
証明書のデプロイ プロセスの詳細については、デプロイの概要をご覧ください。
準備
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
このチュートリアルのタスクを完了するための次のロールがあることを確認してください。
- Certificate Manager オーナー: Certificate Manager リソースの作成と管理に必要です。
- Compute ロードバランサ管理者: HTTPS ターゲット プロキシの作成と管理に必要です。
- CA Service 管理者: CA Service 内でアクションを実行するために必要です。
詳しくは以下をご覧ください。
- Certificate Manager のロールと権限
- Compute Engine の Compute Engine の IAM ロールと権限
- CA Service の権限とロール
CA プールを作成します。この CA プールに 1 つ以上の CA を作成して有効にする必要があります。
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 サービス証明書リクエスト元ロールを付与します。
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 ロケーション。CA プール、証明書発行構成リソース、マネージド証明書と同じロケーションを指定する必要があります。SERVICE_ACCOUNT
: ステップ 1 で作成したサービス アカウントのフルネーム。
CA プールの証明書発行の構成リソースを作成します。
gcloud beta certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \ --ca-pool=CA_POOL \ --location=LOCATION> \ [--lifetime=CERTIFICATE_LIFETIME] \ [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \ [--key-algorithm=KEY_ALGORITHM]
以下のように置き換えます。
ISSUANCE_CONFIG_NAME
: 証明書発行構成リソースの一意の名前。CA_POOL
: この証明書発行の構成に割り当てる CA プールの完全なリソースパスと名前。LOCATION
: ターゲットの Google Cloud ロケーション。CA プール、証明書発行構成リソース、マネージド証明書と同じロケーションを指定する必要があります。CERTIFICATE_LIFETIME
: 証明書の有効期間(日数)。有効な値は、標準の期間形式で 21 ~ 30 日です。デフォルトは 30 日(30D
)です。この設定は省略可能です。ROTATION_WINDOW_PERCENTAGE
: 更新がトリガーされる証明書の存続期間の割合。デフォルトは 66% です。証明書の更新が、証明書の発行の 7 日以上後、期限切れの 7 日以上前に行われるように、証明書の有効期間を基準にしてローテーション ウィンドウの割合を設定する必要があります。この設定は省略可能です。KEY_ALGORITHM
: 秘密鍵の生成に使用される暗号化アルゴリズム。有効な値はecdsa-p256
またはrsa-2048
です。 デフォルト値はrsa-2048
です。この設定は省略可能です。
証明書発行の構成リソースの詳細については、証明書発行の構成を管理するをご覧ください。
リージョン Google が管理する証明書を作成する
前の手順で作成した証明書発行構成リソースを使用して、CA Service によって発行されたリージョン Google マネージド証明書を作成します。
コンソール
Google Cloud コンソールで、[Certificate Manager] ページに移動します。
表示されたページで [証明書] タブを選択します。
[証明書を追加] をクリックします。
証明書の名前を入力します。
この名前は、プロジェクト内で一意にする必要があります。
省略可: 証明書の [説明] を入力します。説明は、後で特定の証明書を識別するのに役立ちます。
[ロケーション] で [リージョン] を選択します。
[リージョン] リストでリージョンを選択します。
[証明書の種類] で [Google 管理の証明書を作成する] を選択します。
[認証局の種類] で [非公開] を選択します。
証明書の [Domain Names] を指定します。ターゲット ドメインのカンマ区切りリストを入力します。また、各ドメイン名は完全修飾ドメイン名(
myorg.example.com
など)にする必要があります。[証明書発行構成] で、ターゲット CA プールを参照する証明書発行構成リソースの名前を選択します。
証明書に関連付けるラベルを指定します。必要に応じて複数のラベルを追加できます。ラベルを追加するには、[add_box ラベルの追加] ボタンをクリックして、ラベルの
key
とvalue
を指定します。[作成] をクリックします。新しい証明書が証明書のリストに表示されていることを確認します。
gcloud
次のコマンドを実行します。
gcloud beta certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES" \ --issuance-config="ISSUANCE_CONFIG_NAME" \ --location="LOCATION"
以下のように置き換えます。
CERTIFICATE_NAME
: 証明書の一意の名前。DOMAIN_NAMES
: この証明書のターゲット ドメインのカンマ区切りのリスト。各ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。ISSUANCE_CONFIG_NAME
: ターゲット CA プールを参照する証明書発行構成リソースの名前。LOCATION
: ターゲットの Google Cloud ロケーション。CA プール、証明書発行構成リソース、マネージド証明書と同じロケーションを指定する必要があります。
API
次のように certificates.create
メソッドに POST
リクエストを送信して証明書を作成します。
POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME" { name: "/projects/example-project/locations/LOCATION/certificates/my-cert", "managed": { "domains": ["DOMAIN_NAME"], "issuanceConfig": "ISSUANCE_CONFIG_NAME", }, }
以下のように置き換えます。
PROJECT_ID
: ターゲットの Google Cloud プロジェクトの ID。LOCATION
: ターゲットの Google Cloud ロケーション。CA プール、証明書発行構成リソース、マネージド証明書と同じロケーションを指定する必要があります。CERTIFICATE_NAME
: 証明書の一意の名前。DOMAIN_NAME
: この証明書のターゲット ドメイン。 ドメイン名は完全修飾ドメイン名(example.com
、www.example.com
など)にする必要があります。ISSUANCE_CONFIG_NAME
: ターゲット CA プールを参照する証明書発行構成リソースの名前。
証明書のデプロイ プロセスの概要については、デプロイの概要をご覧ください。
証明書が有効であることを確認する
次のコマンドを使用して、証明書をロードバランサにデプロイする前に、証明書自体が有効であることを確認します。証明書の状態が ACTIVE
に変わるまで数分かかることがあります。
gcloud beta certificate-manager certificates describe CERTIFICATE_NAME \ --location=LOCATION
以下のように置き換えます。
CERTIFICATE_NAME
: 証明書の一意の名前。LOCATION
: ターゲットの Google Cloud ロケーション。CA プール、証明書発行構成リソース、マネージド証明書と同じロケーションを指定する必要があります。
このコマンドは、次のような出力を返します。
createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: domains: - myorg.example.com issuanceConfig: projects/myproject/locations/mylocation/issuanceConfigs/myissuanceConfig state: ACTIVE name: projects/myproject/locations/mylocation/certificates/mycertificate pemCertificate: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- sanDnsnames: - myorg.example.com updateTime: '2021-10-20T12:19:55.083385630Z'
リージョン Google マネージド証明書をロードバランサにデプロイする
リージョン Google マネージド証明書をデプロイするには、HTTPS ターゲット プロキシを作成し、証明書を添付します。
HTTPS ターゲット プロキシを作成する
HTTPS ターゲット プロキシを作成して証明書を添付するには、次のコマンドを実行します。
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP \ --region=REGION \ --certificate-manager-certificates=CERTIFICATE_NAME
以下のように置き換えます。
PROXY_NAME
: プロキシの一意の名前。URL_MAP
: URL マップの名前。ロードバランサの作成時に URL マップを作成しました。REGION
: HTTPS ターゲット プロキシを作成するリージョン。CERTIFICATE_NAME
: 証明書の名前。
ターゲット プロキシが作成されているかどうかを確認するには、次のコマンドを実行します。
gcloud compute target-https-proxies list
転送ルールの作成
転送ルールを設定し、ロードバランサの設定を完了します。
- リージョン外部アプリケーション ロードバランサを使用している場合は、VM インスタンス グループのバックエンドを使用してリージョン外部アプリケーション ロードバランサを設定するをご覧ください。
- リージョン内部アプリケーション ロードバランサを使用している場合は、VM インスタンス グループのバックエンドを使用してリージョン内部アプリケーション ロードバランサを設定するをご覧ください。
クリーンアップ
このチュートリアルで行った変更を元に戻すには、次の手順を行います。
Google マネージド証明書を削除します。
gcloud certificate-manager certificates delete CERTIFICATE_NAME --location=LOCATION
以下を置き換えます。
CERTIFICATE_NAME
: 証明書の名前。LOCATION
: ターゲットの Google Cloud ロケーション
証明書発行の構成リソースを削除します。
gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME --location=LOCATION
以下を置き換えます。
CERTIFICATE_NAME
: 証明書の名前。LOCATION
: ターゲットの Google Cloud ロケーション
CA プールを削除するで説明されているように、CA プールを削除します。
証明書発行の構成で参照されている CA プールで最後に有効にした CA を無効にする場合や、参照される CA プールを完全に削除する場合は、まず、その CA プールを参照するすべての証明書発行の構成を削除する必要があります。
トラブルシューティング
トラブルシューティングの手順については、CA Service インスタンスによって発行された証明書に関連する問題をご覧ください。