証明書を Certificate Manager に移行する

このページでは、1 つ以上の証明書を Certificate Manager に移行する手順について説明します。ここでは次のシナリオを扱います。

  • サードパーティの証明書を Certificate Manager に移行する。
  • Cloud Load Balancing 証明書を Certificate Manager に移行する。Cloud Load Balancing 証明書の詳細については、Cloud Load Balancing ドキュメントの SSL 証明書の概要をご覧ください。

どちらのシナリオでも、構成中にエラーが発生しない限り、ダウンタイムは発生しません。

このページで説明する Certificate Manager エンティティの詳細については、Certificate Manager の仕組みをご覧ください。

サードパーティの証明書を Certificate Manager に移行する

このセクションでは、サードパーティ サービスによって提供される 1 つ以上の証明書を Certificate Manager に移行する方法について説明します。

始める前に、サポートされているロードバランサを選択し、設定する必要があります。Certificate Manager を使用すると、次のロードバランサ リソースで使用する Transport Layer Security(TLS)証明書を取得、管理できます。

  • アプリケーション ロードバランサで使用されるターゲット HTTPS プロキシ:

    • グローバル外部アプリケーション ロードバランサ
    • 従来のアプリケーション ロードバランサ
    • リージョン外部アプリケーション ロードバランサ(プレビュー
    • リージョン内部アプリケーション ロードバランサ(プレビュー
    • クロスリージョン内部アプリケーション ロードバランサ(プレビュー
  • プロキシ ネットワーク ロードバランサで使用されるターゲット SSL プロキシ:

    • グローバル外部プロキシ ネットワーク ロードバランサ
    • 従来のプロキシ ネットワーク ロードバランサ

移行する証明書ごとに次の手順を行います。

  1. DNS 認証を使用して Google マネージド証明書をデプロイする(チュートリアル)で説明されているように、DNS 認証を使用してターゲット証明書をデプロイしますが、クリーンアップ手順は含まれません。ロードバランサに移行するすべての証明書に 1 つの証明書マップを使用します。

  2. 次のコマンドを使用して、前の手順でデプロイした証明書ごとに、ロードバランサの IP アドレスの証明書の対象となる各ドメインへの接続をテストします。

    openssl s_client -showcerts -servername DOMAIN_NAME -connect IP_ADDRESS:443
    

    以下を置き換えます。

    • DOMAIN_NAME: 移行先ドメインの名前
    • IP_ADDRESS: ロードバランサの IP アドレス

    接続のテストの詳細については、OpenSSL でのテストをご覧ください。

  3. ロードバランサの IP アドレスを指すように DNS A および AAAA レコードを更新するの手順を実行して、サードパーティ サービスから Cloud Load Balancing にトラフィックを切り替えます。

Cloud Load Balancing 証明書を Certificate Manager に移行する

このセクションでは、1 つ以上の Cloud Load Balancing 証明書を Certificate Manager に移行する方法について説明します。

移行する証明書を特定する

移行する証明書を特定するには、次の手順を行います。

  1. ターゲット ロードバランサで、ターゲット プロキシの名前を特定します。

  2. 次のコマンドを使用して、添付されている証明書を含め、ターゲット プロキシに関する情報を取得するには、移行する証明書を特定します。

    gcloud compute target-https-proxies describe TARGET_PROXY_NAME
    

    TARGET_PROXY_NAME は、ターゲット プロキシの名前に置き換えます。

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

    creationTimestamp: '2021-10-06T04:05:07.520-07:00'
    fingerprint: c9Txdx6AfcM=
    id: '365692570234384780'
    kind: compute#targetHttpsProxy
    name: my-proxy
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpsProxies/my-proxy
    sslCertificates:
    - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-first-certificate
    - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-second-certificate
    urlMap: https://www.googleapis.com/compute/v1/projects/my-project/global/urlMaps/my-map
    

    詳細については、ターゲット プロキシに関する情報の取得をご覧ください。

Certificate Manager で証明書を作成する

選択した証明書を Certificate Manager で次のように作成します。

次のステップに進む前に、証明書が有効であることを確認するで説明されているように、各証明書の状態が ACTIVE に変わるまで待ちます。各証明書が発行され、状態が ACTIVE に変わるまでには、数時間かかる場合があります。

証明書マップを作成する

証明書をグローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサにデプロイするには、証明書マップの作成の手順に従って証明書マップを作成します。

リージョン外部 Application Load Balancer またはリージョン内部 Application Load Balancer に証明書をデプロイするために、証明書マップは必要ありません。

証明書マップエントリを作成する

証明書をグローバル外部アプリケーション ロードバランサまたは従来のアプリケーション ロードバランサにデプロイするには、証明書マップ エントリを作成します。リージョン外部 Application Load Balancer またはリージョン内部 Application Load Balancer に証明書をデプロイするために、証明書マップ エントリは必要ありません。

移行する証明書ごとに、次のようにその証明書を参照する証明書マップ エントリを作成します。

  1. 次のコマンドを使用して、証明書の詳細を取得します。

    gcloud compute ssl-certificates --project=my-project describe CERTIFICATE_NAME
    

    CERTIFICATE_NAME は、ターゲット証明書の名前に置き換えます。

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

       -----BEGIN CERTIFICATE-----
       MIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX
       MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE
       CxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx
       OTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT
       GUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx
       MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAthECix7joXebO9y/lD63
       ladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS
       iV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k
       KSUjB6G00j0uYODP0gmHu81I8E3CwnqIiru6z1kZ1q+PsAewnjHxgsHA3y6mbWwZ
       DrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk
       j5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5
       cuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW
       CruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499
       iYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei
       Eua++tgy/BBjFFFy3l3WFpO9KWgz7zpm7AeKJt8T11dleCfeXkkUAKIAf5qoIbap
       sZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b
       9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP
       BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTkrysmcRorSCeFL1JmLO/wiRNxPjAf
       BgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw
       JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH
       MAKGHWh0dHA6Ly9wa2kuZ29vZy9nc3IxL2dzcjEuY3J0MDIGA1UdHwQrMCkwJ6Al
       oCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy
       MAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF
       AwMwDQYJKoZIhvcNAQELBQADggEBADSkHrEoo9C0dhemMXoh6dFSPsjbdBZBiLg9
       NR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9
       WprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw
       9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy
       +qduBmpvvYuR7hZL6Dupszfnw0Skfths18dG9ZKb59UhvmaSGZRVbNQpsg3BZlvi
       d0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8=
       -----END CERTIFICATE-----
       creationTimestamp: '2021-05-06T04:39:21.736-07:00'
       expireTime: '2022-06-07T01:10:34.000-07:00'
       id: '6422259403966690822'
       kind: compute#sslCertificate
       managed:
          domainStatus:
          a.my-domain1.example.com: ACTIVE
          b.my-domain2.example.com: ACTIVE
          domains:
          - a.my-domain1.example.com
          - b.my-domain2.example.com
          status: ACTIVE
       name: my-certificate
       selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-certificate
       subjectAlternativeNames:
       - a. my-domain1.example.com
       - b. my-domain2.example.com
       type: MANAGED
    
  2. subjectAlternativeNames フィールドに一覧表示されたドメインごとに、証明書マップエントリを作成するの手順に従って、そのドメインを対象とする証明書マップエントリを作成します。複数の証明書が 1 つのドメインを対象としている場合は、1 つの証明書マップエントリを作成し、そのドメインを対象とする有効な証明書を使用するだけで済みます。

  3. 省略可:プライマリ証明書マップエントリを作成するの説明に従って、プロキシに最初に添付された証明書のリストから最初の証明書に対応するプライマリ証明書マップエントリを作成します。

  4. 次のコマンドを使用して、作成した各証明書マップエントリが有効であることを確認します。

    gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
       --map="CERTIFICATE_MAP_NAME"
    

    以下を置き換えます。

    • CERTIFICATE_MAP_ENTRY_NAME: ターゲット証明書マップエントリの名前
    • CERTIFICATE_MAP_NAME: この証明書マップエントリが添付されている証明書マップの名前

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

       createTime: '2021-09-06T10:01:56.229472109Z'
       name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/my-map-entry
       state: ACTIVE
       updateTime: '2021-09-06T10:01:58.277031787Z'
    

省略可: 新しいロードバランサで構成をテストする

ダウンタイムを最小限に抑えるために、新しく構成した証明書マップを本番環境のトラフィックを処理しない新しいロードバランサでテストすることをおすすめします。これにより、本番環境で移行を続行する前に、エラーを検出して解決できます。

次のように構成をテストします。

  1. 外部アプリケーション ロードバランサの設定の説明に沿って、新しいターゲット プロキシで新しいロードバランサを作成します。

  2. 証明書プロキシをターゲット プロキシに接続するの説明に従って、外部アプリケーション ロードバランサを使用している場合は、テストする証明書マップを新しいロードバランサのターゲット プロキシに接続します。

    リージョン外部 Application Load Balancer またはリージョン内部 Application Load Balancer を使用している場合は、リージョンのセルフマネージド証明書をデプロイするの説明に従って、ターゲット プロキシに証明書を添付します。

  3. 次のコマンドを使用して、移行に含まれるターゲット ドメインごとに、新しいロードバランサの IP アドレスでドメインへの接続をテストします。

    openssl s_client -showcerts -servername DOMAIN_NAME -connect IP_ADDRESS:443
    

    以下を置き換えます。

    • DOMAIN_NAME: 移行先ドメインの名前
    • IP_ADDRESS: 新しいロードバランサの IP アドレス

    接続のテストの詳細については、OpenSSL でのテストをご覧ください。

テスト環境をクリーンアップする

前の手順で作成したテスト環境を次のようにクリーンアップします。

  1. プロキシから証明書マップを切断します。

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    

    PROXY_NAME は、ターゲット プロキシの名前に置き換えます。

  2. ロードバランサの削除の説明に沿ってテスト ロードバランサを削除します。

前の手順で作成した証明書、証明書マップ、証明書マップエントリは削除しないでください。

新しい証明書マップをターゲット ロードバランサに適用する

新しい証明書構成をテストして有効であることを確認したら、次のように新しい証明書マップをターゲット ロードバランサに適用します。

  1. 証明書プロキシをターゲット プロキシに接続するの説明に従って、外部アプリケーション ロードバランサを使用している場合は、新しい証明書マップを適切なターゲット プロキシに接続します。

    リージョン外部 Application Load Balancer またはリージョン内部 Application Load Balancer を使用している場合は、リージョンのセルフマネージド証明書をデプロイするの説明に従って、ターゲット プロキシに証明書を添付します。

  2. 構成の変更が適用されてロードバランサが新しい証明書の提供を開始するまで待ちます。通常は数分で完了しますが、場合によっては最長で 30 分ほどかかる場合があります。

  3. トラフィックに問題がある場合は、プロキシから証明書マップを切断するの手順に従って、ターゲット プロキシから新しい証明書マップを切断します。これにより、ロードバランサが元の構成に戻ります。それ以外の場合は、新しい構成が完了しました。

    リージョン外部 Application Load Balancer またはリージョン内部 Application Load Balancer を使用している場合は、以前に添付した従来の証明書を添付して変更を元に戻す。

次のステップ