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


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

目標

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

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

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

準備

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  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 マネージド証明書を作成します。

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 プール、証明書発行の構成リソース、マネージド証明書と同じロケーションを指定する必要があります。

このコマンドでは、次のような出力が返されます。

certificatePem: myPEM
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
scope: myScope
subjectAlternativeNames:- - 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 list target-https-proxies

転送ルールの作成

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

クリーンアップ

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

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

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

次のように置き換えます。

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

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

次のように置き換えます。

  • CERTIFICATE_NAME: 証明書の名前。
  • LOCATION: ターゲットの Google Cloud のロケーション
  1. CA プールを削除するの説明に沿って、CA プールを削除します。

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

トラブルシューティング

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

次のステップ