このチュートリアルでは、Certificate Manager を使用して、リージョン Google マネージド証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイする方法について説明します。
証明書をリージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサにデプロイするには、証明書をターゲット プロキシに直接添付します。
目標
このチュートリアルでは、次のタスクを行う方法を説明します。
Certificate Manager を使用して、DNS 承認で公的に信頼できる CA によって発行された Google マネージド証明書を作成します。リージョン Google マネージド証明書を作成するには、プロジェクトごとの DNS 認証を使用する必要があります。
ターゲット HTTPS プロキシを使用して、サポートされているロードバランサに証明書をデプロイします。
証明書のデプロイ プロセスの詳細については、デプロイの概要をご覧ください。
準備
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
証明書をデプロイするには、Google Cloud CLI バージョン
465.0.0
以降が必要です。gcloud CLI のバージョンを確認するには、次のコマンドを実行します。gcloud --version
gcloud CLI を更新するには、次のコマンドを実行します。
gcloud components update
このチュートリアルのタスクを完了するための次のロールがあることを確認してください。
- Certificate Manager オーナー: Certificate Manager リソースの作成と管理に必要です。
- Compute ロードバランサ管理者または Compute ネットワーク管理者: HTTPS ターゲット プロキシの作成と管理に必要です。
- DNS 管理者: DNS ソリューションとして Cloud DNS を使用する場合に必要です。
詳しくは以下をご覧ください。
- Certificate Manager のロールと権限
- Compute Engine の Compute Engine の IAM ロールと権限
- Cloud DNS の IAM を使用したアクセス制御
リージョン 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
DNS レコード トランザクションを次のように開始します。
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
DNS_ZONE_NAME
は、ターゲット DNS ゾーンの名前に置き換えます。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"
DNS レコード トランザクションを実行して変更を保存します。
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
DNS_ZONE_NAME
は、ターゲット DNS ゾーンの名前に置き換えます。
DNS 認証を参照するリージョン Google マネージド証明書を作成する
前の手順で作成した DNS 認証を参照する Google マネージド証明書を作成するには、次の操作を行います。
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 マネージド証明書を作成したロケーション。
出力は次のようになります。
certificatePem: myPEM 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 scope: myScope 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
: 証明書の名前。
クリーンアップ
このチュートリアルで行った変更を元に戻すには、次の手順を行います。
- Google マネージド証明書を削除します。
gcloud certificate-manager certificates delete CERTIFICATE_NAME --location=LOCATION
次のように置き換えます。
CERTIFICATE_NAME
: 証明書の名前。LOCATION
: Google マネージド証明書を作成したロケーション。
- DNS 認証を削除します。
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME --location=LOCATION
次のように置き換えます。
AUTHORIZATION_NAME
: DNS 認証の名前。LOCATION
: DNS 認証を作成したロケーション。