リージョンの Google マネージド証明書をデプロイする


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

証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイするには、証明書をターゲット プロキシに直接添付します。

目標

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

  • Certificate Manager を使用して、DNS 承認で公的に信頼できる CA によって発行された Google マネージド証明書を作成します。リージョン Google マネージド証明書を作成するには、プロジェクトごとの DNS 認証を使用する必要があります。

  • ターゲット HTTPS プロキシを使用して、サポートされているロードバランサに証明書をデプロイします。

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

準備

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

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

  2. 証明書をデプロイするには、Google Cloud CLI バージョン 465.0.0 以降が必要です。gcloud CLI のバージョンを確認するには、次のコマンドを実行します。

    gcloud --version
    
  3. gcloud CLI を更新するには、次のコマンドを実行します。

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

    • Certificate Manager オーナー: Certificate Manager リソースの作成と管理に必要です。
    • Compute ロードバランサ管理者または Compute ネットワーク管理者: HTTPS ターゲット プロキシの作成と管理に必要です。
    • DNS 管理者: DNS ソリューションとして Cloud DNS を使用する場合に必要です。

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

リージョン Google が管理する証明書を作成する

DNS 認証とそれを参照する Google マネージド証明書を作成するには、このセクションの手順を完了します。

DNS 認証 の作成

このセクションの説明に沿って、DNS 認証を作成します。*.myorg.example.com などのワイルドカード証明書用の DNS 認証を作成する場合は、親ドメイン(myorg.example.com など)の DNS 認証を構成します。

gcloud

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=PER_PROJECT_RECORD \
    --location="LOCATION" \
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \
    --location="LOCATION"

以下を置き換えます。

  • AUTHORIZATION_NAME: DNS 認証の名前。
  • DOMAIN_NAME: この DNS 承認を作成するドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。
  • LOCATION: DNS 認証を作成するロケーション。

このコマンドは、次の例に示すように出力を返します。出力の CNAME レコードを使用して、DNS 構成に追加します。

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.us-central1.authorize.certificatemanager.goog.
name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com.
type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/us-central1/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

DNS 構成に CNAME レコードを追加する

Google Cloud を使用して DNS を管理している場合は、このセクションの手順に従ってください。それ以外の場合は、サードパーティ DNS ソリューションのドキュメントをご確認ください。

このセクションの手順を行う前に、パブリック DNS ゾーンが作成されていることを確認してください。

DNS 認証を作成するとき、gcloud CLI コマンドは対応する CNAME レコードを返します。次のように、この CNAME レコードをターゲット ドメインの DNS ゾーンの DNS 構成に追加する必要があります。

gcloud

  1. DNS レコード トランザクションを次のように開始します。

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME は、ターゲット DNS ゾーンの名前に置き換えます。

  2. CNAME レコードをターゲット DNS ゾーンに追加します。

    gcloud dns record-sets transaction add CNAME_RECORD_DATA \
      --name= "CNAME_RECORD_NAME" \
      --ttl="30" \
      --type="CNAME" \
      --zone="DNS_ZONE_NAME"
    

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

    • CNAME_RECORD_DATA: 対応する DNS 認証を作成した gCloud CLI コマンドによって返される CNAME レコードの完全なデータ値。
    • CNAME_RECORD_NAME: 対応する DNS 認証を作成した gcloud CLI コマンドによって返される CNAME レコードの完全な名前の値。
    • DNS_ZONE_NAME: ターゲット DNS ゾーンの名前。

    次の例をご覧ください。

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.us-central1.authorize.certificatemanager.goog. \
      --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com" \
      --ttl="30" \
      --type="CNAME" \
      --zone="example-com"
    
  3. DNS レコード トランザクションを実行して変更を保存します。

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME は、ターゲット DNS ゾーンの名前に置き換えます。

DNS 認証を参照するリージョン Google マネージド証明書を作成する

前の手順で作成した DNS 認証を参照する Google マネージド証明書を作成するには、次の操作を行います。

コンソール

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

    Certificate Manager に移動

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

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

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

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

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

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

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

  8. [証明書の種類] で [Google マネージドの証明書を作成する] を選択します。

  9. [認証局のタイプ] で [パブリック] を選択します。

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

  11. [認証タイプ] で [DNS 認証] を選択します。ドメイン名に DNS 認証が関連付けられている場合は、自動的に取得されます。ドメイン名に DNS 認証が関連付けられていない場合は、次の操作を行います。

    1. [見つからない DNS 認証の作成] をクリックして [DNS 認証の作成] ダイアログを表示します。
    2. [DNS 認証名] フィールドに、DNS 認証名を指定します。
    3. [DNS 認証の作成] をクリックします。 DNS 名がドメイン名に関連付けられていることを確認します。
  12. 証明書に関連付けるラベルを指定します。必要に応じて、複数のラベルを追加できます。ラベルを追加するには、[ ラベルの追加] ボタンをクリックして、ラベルの keyvalue を指定します。

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

gcloud

次のコマンドを実行します。

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains=DOMAIN_NAME \
    --dns-authorizations=AUTHORIZATION_NAME \
    --location=LOCATION

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

  • CERTIFICATE_NAME: 証明書の一意の名前。
  • DOMAIN_NAME: 証明書のターゲット ドメイン。 アスタリスク ドットの接頭辞(*.)はワイルドカード証明書を示します。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。
  • AUTHORIZATION_NAME: この証明書用に作成した DNS 承認の名前。
  • LOCATION: Google マネージド証明書を作成するロケーション。

ワイルドカード ドメイン名を使用して Google マネージド証明書を作成するには、次のコマンドを使用します。ワイルドカード ドメイン名証明書は、特定のドメインのすべての第 1 レベル サブドメインに対応します。

gcloud certificate-manager certificates create CERTIFICATE_NAME \
   --domains="*.DOMAIN_NAME,DOMAIN_NAME" \
   --dns-authorizations=AUTHORIZATION_NAME
   --location=LOCATION

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

  • CERTIFICATE_NAME: 証明書の一意の名前。
  • DOMAIN_NAME: 証明書のターゲット ドメイン。*. 接頭辞はワイルドカード証明書を示します。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。
  • AUTHORIZATION_NAME: この証明書用に作成した DNS 承認の名前。
  • LOCATION: Google マネージド証明書を作成するロケーション。

証明書が有効であることを確認する

次のコマンドを使用して、証明書をロードバランサにデプロイする前に、証明書自体が有効であることを確認します。証明書の状態が ACTIVE に変わるまで最長で数時間かかることがあります。

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

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

  • CERTIFICATE_NAME: 証明書の一意の名前。
  • LOCATION: Google マネージド証明書を作成したロケーション。

出力は次のようになります。

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
  -  projects/my-project/locations/us-central1/dnsAuthorizations/myAuth
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/us-central1/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

証明書をロードバランサにデプロイする

Google マネージド証明書をロードバランサにデプロイするには、次の手順を行います。

このセクションのタスクに進む前に、リージョン Google マネージド証明書を作成するセクションに記載されているタスクを完了していることを確認してください。

リージョン Google マネージド証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイするには、証明書をターゲット プロキシに直接添付してデプロイします。

証明書をターゲット プロキシに直接添付する

証明書をプロキシに直接添付するには、次のコマンドを実行します。

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --region=REGION \
    --certificate-manager-certificates=CERTIFICATE_NAME

以下を置き換えます。

  • PROXY_NAME: プロキシの一意の名前。
  • URL_MAP: ロードバランサの作成時に作成した URL マップの名前。
  • REGION: HTTPS ターゲット プロキシを作成するリージョン。
  • CERTIFICATE_NAME: 証明書の名前。

クリーンアップ

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

  1. Google マネージド証明書を削除します。
    gcloud certificate-manager certificates delete CERTIFICATE_NAME
       --location=LOCATION
    
    次のように置き換えます。
  • CERTIFICATE_NAME: 証明書の名前。
  • LOCATION: Google マネージド証明書を作成したロケーション。
  1. DNS 認証を削除します。
    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
       --location=LOCATION
    
    次のように置き換えます。
  • AUTHORIZATION_NAME: DNS 認証の名前。
  • LOCATION: DNS 認証を作成したロケーション。

次のステップ