Certificate Authority Service を使用してリージョン Google マネージド証明書をデプロイする


このチュートリアルでは、Certificate Manager を使用して、CA Service を使用してリージョンの Google マネージド証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイする方法について説明します。

目標

このチュートリアルでは、次のタスクを行う方法を説明します。

  • Certificate Manager を使用して、CA Service で Google マネージド証明書を作成する。
  • ターゲット HTTPS プロキシを使用して、サポートされているロードバランサに証明書をデプロイします。

証明書のデプロイ プロセスの詳細については、デプロイの概要をご覧ください。

準備

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. このチュートリアルのタスクを完了するための次のロールがあることを確認してください。

    • Certificate Manager オーナー: Certificate Manager リソースの作成と管理に必要です。
    • Compute ロードバランサ管理者: HTTPS ターゲット プロキシの作成と管理に必要です。
    • CA Service 管理者: CA Service 内でアクションを実行するために必要です。

    詳しくは以下をご覧ください。

  3. Certificate Manager API を有効にします

  4. CA Service API を有効にします

  5. CA プールを作成します。この CA プールに 1 つ以上の CA を作成して有効にする必要があります。

CA Service と Certificate Manager の統合を構成する

次のように、CA Service と統合するように Certificate Manager を構成します。

  1. ターゲットの 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
  1. 次のように、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 で作成したサービス アカウントのフルネーム。
  2. 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 マネージド証明書を作成します。

コンソール

  1. Google Cloud コンソールで、[Certificate Manager] ページに移動します。

    Certificate Manager に移動

  2. 表示されたページで [証明書] タブを選択します。

  3. [証明書を追加] をクリックします。

  4. 証明書の名前を入力します。

    この名前は、プロジェクト内で一意にする必要があります。

  5. 省略可: 証明書の [説明] を入力します。説明は、後で特定の証明書を識別するのに役立ちます。

  6. [ロケーション] で [リージョン] を選択します。

  7. [リージョン] リストでリージョンを選択します。

  8. [証明書の種類] で [Google 管理の証明書を作成する] を選択します。

  9. [認証局の種類] で [非公開] を選択します。

  10. 証明書の [Domain Names] を指定します。ターゲット ドメインのカンマ区切りリストを入力します。また、各ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。

  11. [証明書発行構成] で、ターゲット CA プールを参照する証明書発行構成リソースの名前を選択します。

  12. 証明書に関連付けるラベルを指定します。必要に応じて複数のラベルを追加できます。ラベルを追加するには、[ ラベルの追加] ボタンをクリックして、ラベルの keyvalue を指定します。

  13. [作成] をクリックします。新しい証明書が証明書のリストに表示されていることを確認します。

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.comwww.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

転送ルールの作成

転送ルールを設定し、ロードバランサの設定を完了します。

クリーンアップ

このチュートリアルで行った変更を元に戻すには、次の手順を行います。

  1. Google マネージド証明書を削除します。

    コンソール

    1. Google Cloud コンソールで、[Certificate Manager] ページに移動します。

      Certificate Manager に移動

    2. [証明書] タブで、証明書のチェックボックスをオンにします。

    3. [削除] をクリックします。

    4. 表示されたダイアログで、[削除] をクリックして確定します。

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME \
        --location=LOCATION
    

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

    • CERTIFICATE_NAME: 証明書の名前。
    • LOCATION: ターゲットの Google Cloud ロケーション
  2. 証明書発行の構成リソースを削除します。

    コンソール

    1. Google Cloud コンソールで、[Certificate Manager] ページに移動します。

      Certificate Manager に移動

    2. [発行の構成] タブで、発行構成のチェックボックスをオンにします。

    3. [削除] をクリックします。

    4. 表示されたダイアログで、[削除] をクリックして確定します。

    gcloud

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME \
        --location=LOCATION
    

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

    • ISSUANCE_CONFIG_NAME: 発行構成の名前
    • LOCATION: ターゲットの Google Cloud ロケーション
  3. CA プールを削除するで説明されているように、CA プールを削除します。

    証明書発行の構成で参照されている CA プールで最後に有効にした CA を無効にする場合や、参照される CA プールを完全に削除する場合は、まず、その CA プールを参照するすべての証明書発行の構成を削除する必要があります。

トラブルシューティング

トラブルシューティングの手順については、CA Service インスタンスによって発行された証明書に関連する問題をご覧ください。

次のステップ