將負載平衡器憑證遷移至 Certificate Manager


本教學課程說明如何將 Cloud Load Balancing 憑證遷移至 Certificate Manager。如要進一步瞭解 Cloud Load Balancing 憑證,請參閱 Cloud Load Balancing 說明文件中的 SSL 憑證總覽

如要遷移 Cloud Load Balancing 憑證,且不希望發生停機情形,請先找出要遷移的憑證。接著,建立與 Cloud Load Balancing 憑證數量相同的 Google 代管憑證。接著,將憑證整合到單一憑證對應檔,並在另一個負載平衡器中測試憑證對應檔。如果測試成功,請將憑證對應項附加至目標負載平衡器,該負載平衡器會代管 Cloud Load Balancing 憑證。

如要查看支援的負載平衡器清單,請參閱「憑證管理員總覽」。

目標

本教學課程將說明如何完成下列工作:

  • 找出要遷移的目標負載平衡器憑證。
  • 建立 Google 代管憑證。
  • 建立憑證對應關係和憑證對應項目。
  • 在其他負載平衡器中測試憑證對應。
  • 將憑證對應項目附加至目標負載平衡器。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. 必要的角色

    請確認您具備下列角色,可完成本教學課程中的工作:

    • Certificate Manager 擁有者 (roles/certificatemanager.owner)

      建立及管理 Certificate Manager 資源時必須具備這項權限。

    • Compute 負載平衡器管理員 (roles/compute.loadBalancerAdmin) 或 Compute 網路管理員 (roles/compute.networkAdmin)

      建立及管理 HTTPS 目標 Proxy 時必須使用。

    • DNS 管理員 (roles/dns.admin)

      如要使用 Cloud DNS 做為 DNS 解決方案,則必須啟用這項服務。

    如要瞭解詳情,請參考下列資源:

找出要遷移的憑證

如要找出要遷移的憑證,請按照下列步驟操作:

  1. 在負載平衡器上,找出目標 Proxy 的名稱。

  2. 找出要遷移的憑證。

    如要找出附加至目標 Proxy 的憑證,請執行下列指令:

    gcloud compute target-https-proxies describe TARGET_PROXY_NAME
    

    TARGET_PROXY_NAME 替換為目標 Proxy 的名稱。

    輸出結果會與下列內容相似:

    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
    

    請注意 sslCertificates 欄位中列出的憑證名稱。詳情請參閱「目標 Proxy 總覽」。

  3. 取得各項認證的詳細資料

    gcloud compute ssl-certificates --project=PROJECT_ID describe LB_CERTIFICATE_NAME
    

    更改下列內容:

    • PROJECT_ID: Google Cloud 專案的 ID。
    • LB_CERTIFICATE_NAME:負載平衡器憑證的名稱。

    輸出結果會與下列內容相似:

       certificate: |
         -----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
    

建立 Google 代管憑證

建立與負載平衡器憑證數量相同的 Google 代管憑證。如果是全域或傳統負載平衡器,請建立全域憑證;如果是區域負載平衡器,請建立區域憑證;如果是跨區域負載平衡器,請建立跨區域憑證。建立憑證前,請先建立 DNS 授權,並將 CNAME 記錄新增至網域的授權 DNS 區域。

您可以選擇建立使用 DNS 授權的 Google 代管憑證 (建議) 或自行管理的憑證

本節列出建立全域 Google 代管憑證的步驟和指令。如要建立區域或跨區域的 Google 代管憑證,請參閱「建立 Google 代管憑證」。

建立 DNS 授權

DNS 授權僅涵蓋單一網域名稱。您必須為要搭配目標憑證使用的每個網域名稱,分別建立 DNS 授權。

如要為萬用字元憑證 (例如 *.myorg.example.com) 建立 DNS 授權,請為父項網域設定 DNS 授權,例如 myorg.example.com

主控台

建立憑證時,您可以建立 DNS 授權或附加現有的 DNS 授權。詳情請參閱「建立參照 DNS 授權的 Google 代管憑證」。

gcloud

如要建立 DNS 授權,請使用 certificate-manager dns-authorizations create 指令

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME"

更改下列內容:

  • AUTHORIZATION_NAME:DNS 授權的名稱。
  • DOMAIN_NAME:您要建立這項 DNS 授權的目標網域名稱。 網域名稱必須是完整網域名稱,例如 myorg.example.com

全域 Google 代管憑證會使用 FIXED_RECORD 做為預設的 DNS 授權類型。如要使用 PER_PROJECT_RECORD DNS 授權,請執行下列指令:

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

建立 DNS 授權後,請使用 certificate-manager dns-authorizations describe 指令驗證:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \

輸出結果大致如下。在輸出內容中找出 dnsResourceRecord 行,並取得 CNAME 記錄 (datanametype),加入 DNS 設定

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

Terraform

如要建立 DNS 授權,可以使用 google_certificate_manager_dns_authorization 資源

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "${local.name}-dnsauth-${random_id.tf_prefix.hex}"
  description = "The default dns auth"
  domain      = local.domain
  labels = {
    "terraform" : true
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

API

如要建立 DNS 授權,請對 dnsAuthorizations.create 方法發出 POST 要求:

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

更改下列內容:

  • PROJECT_ID: Google Cloud 專案的 ID。
  • AUTHORIZATION_NAME:DNS 授權的名稱。
  • DOMAIN_NAME:您要建立這項 DNS 授權的目標網域名稱。 網域名稱必須是完整網域名稱,例如 myorg.example.com

建立參照 DNS 授權的 Google 代管憑證

如要建立參照您在上一個步驟中建立的 DNS 授權的全域 Google 管理憑證,請執行下列步驟:

主控台

  1. 前往 Google Cloud 控制台的「Certificate Manager」頁面。

    前往 Certificate Manager

  2. 在「憑證」分頁中,按一下「新增憑證」

  3. 在「憑證名稱」欄位中,輸入憑證的專屬名稱。

  4. 選用:在「說明」欄位中輸入憑證說明。說明可協助您識別憑證。

  5. 在「Location」(位置) 部分,選取「Global」

  6. 在「範圍」部分,選取「預設」

  7. 在「憑證類型」中,選取「建立 Google 代管的憑證」

  8. 在「Certificate Authority type」(憑證授權單位類型) 部分,選取「Public」(公開)

  9. 在「網域名稱」欄位中,指定以半形逗號分隔的憑證網域名稱清單。每個網域名稱都必須是完整網域名稱,例如 myorg.example.com。網域名稱也可以是萬用字元網域名稱,例如 *.example.com

  10. 在「授權類型」中,選取「DNS 授權」

    這個頁面會列出網域名稱的 DNS 授權。如果網域名稱沒有相關聯的 DNS 授權,請按照下列步驟建立授權:

    1. 按一下「建立缺少的 DNS 授權」
    2. 在「DNS 授權名稱」欄位中,指定 DNS 授權的名稱。 預設的 DNS 授權類型為 FIXED_RECORD。如要獨立管理多個專案的憑證,請選取「每個專案的授權」核取方塊。
    3. 按一下「建立 DNS 授權」
  11. 在「標籤」欄位中,指定要與憑證建立關聯的標籤。如要新增標籤,請按一下「新增標籤」,然後指定標籤的鍵和值。

  12. 點選「建立」

    新憑證會顯示在憑證清單中。

gcloud

如要建立具有 DNS 授權的全域 Google 代管憑證,請使用 certificate-manager certificates create 指令搭配 dns-authorizations 標記:

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

更改下列內容:

  • CERTIFICATE_NAME:憑證名稱。
  • DOMAIN_NAME:目標網域的名稱。網域名稱必須是完整網域名稱,例如 myorg.example.com,或是萬用字元網域,例如 *.myorg.example.com。星號點前置字串 (*.) 代表萬用字元憑證。
  • AUTHORIZATION_NAMES:以半形逗號分隔的清單,列出您為憑證建立的 DNS 授權名稱。

Terraform

使用 google_certificate_manager_certificate 資源

resource "google_certificate_manager_certificate" "root_cert" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "The wildcard cert"
  managed {
    domains = [local.domain, "*.${local.domain}"]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id
    ]
  }
  labels = {
    "terraform" : true
  }
}

API

certificates.create 方法發出 POST 要求,建立憑證,如下所示:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
  ],
 }
}

更改下列內容:

  • PROJECT_ID: Google Cloud 專案的 ID。
  • CERTIFICATE_NAME:憑證名稱。
  • DOMAIN_NAME:目標網域的名稱。網域名稱必須是完整網域名稱,例如 myorg.example.com,或是萬用字元網域,例如 *.myorg.example.com。星號點前置字串 (*.) 代表萬用字元憑證。
  • AUTHORIZATION_NAMES:以半形逗號分隔的 DNS 授權名稱清單。

在 DNS 設定中新增 CNAME 記錄

如果使用第三方 DNS 解決方案管理 DNS,請參閱相關文件,瞭解如何在 DNS 設定中新增 CNAME 記錄。如果您使用Google Cloud 管理 DNS,請完成本節中的步驟。

主控台

如要建立記錄集,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「DNS zones」頁面。

    前往 Cloud DNS 區域

  2. 按一下要新增記錄的 DNS 區域名稱。

  3. 在「Zone details」(區域詳細資料) 頁面中,按一下「Add standard」(新增標準)

  4. 在「Create record set」(建立記錄集) 頁面的「DNS name」(DNS 名稱) 欄位中,輸入 DNS 區域的子網域。

    輸入子網域名稱時,請確認子網域名稱 (包括「DNS 名稱」欄位中顯示的灰色文字),與gcloud certificate-manager dns-authorizations describe 指令輸出內容中顯示的 dnsResourceRecord.name 欄位完整值相符。

    請參閱以下例子:

    • 如果 dnsResourceRecord.name 欄位值為 _acme-challenge.myorg.example.com.,且「DNS 名稱」欄位中的灰色文字為 .example.com.,請輸入 _acme-challenge.myorg

    • 如果 dnsResourceRecord.name 欄位值為 _acme-challenge.myorg.example.com.,且「DNS 名稱」欄位中的灰色文字為 .myorg.example.com.,請輸入 _acme-challenge

    • 如果 dnsResourceRecord.name 欄位的值為 _acme-challenge_ujmmovf2vn55tgye.myorg.example.com.,且「DNS name」(DNS 名稱) 欄位中灰顯的文字為 .myorg.example.com.,請輸入 _acme-challenge_ujmmovf2vn55tgye

  5. 在「資源記錄類型」欄位中選取「CNAME」

  6. 在「TTL」TTL欄位中,輸入資源記錄存留時間的正數值,也就是記錄可快取的時間。

  7. 從「TTL 單位」清單中選取時間單位,例如 30 minutes

  8. 在「Canonical name」(標準名稱) 欄位中,輸入 dnsResourceRecord.data 欄位顯示的完整值,如gcloud certificate-manager dns-authorizations describe 指令的輸出內容所示。

  9. 如要輸入其他資訊,請按一下「新增項目」

  10. 點選「建立」

gcloud

建立 DNS 授權時,gcloud CLI 指令會傳回對應的 CNAME 記錄。如要在目標網域的 DNS 區域中,將 CNAME 記錄新增至 DNS 設定,請按照下列步驟操作:

  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 \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    更改下列內容:

    • CNAME_RECORD:Google Cloud CLI 指令傳回的 CNAME 記錄完整資料值,該指令會建立對應的 DNS 授權。
    • VALIDATION_SUBDOMAIN_NAME:DNS 區域的前置子網域,例如 _acme-challenge。如要複製名稱,請參閱「建立 DNS 授權」一文,瞭解如何從 gcloud certificate-manager dns-authorizations describe 指令記錄中複製名稱。
    • DOMAIN_NAME:目標網域名稱。網域名稱必須是有效的網域全名,例如 myorg.example.com。目標網域名稱後方也必須加上半形句號。
    • DNS_ZONE_NAME:目標 DNS 區域的名稱。

    請參閱以下範例:

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. 執行 DNS 記錄交易,儲存變更:

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

    DNS_ZONE_NAME 替換為目標 DNS 區域的名稱。

Terraform

如要將 CNAME 記錄新增至 DNS 設定,可以使用 google_dns_record_set 資源

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

驗證憑證狀態

將憑證部署至負載平衡器之前,請先確認憑證是否有效。憑證狀態可能需要幾分鐘的時間才會變更為 ACTIVE

主控台

  1. 前往 Google Cloud 控制台的「Certificate Manager」頁面。

    前往 Certificate Manager

  2. 在「認證」分頁中,查看「狀態」欄中的認證。

gcloud

如要驗證憑證狀態,請執行下列指令:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

CERTIFICATE_NAME 替換為目標 Google 管理的憑證名稱。

輸出結果會與下列內容相似:

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

如果數小時後憑證狀態仍未變成 ACTIVE,請檢查您是否已在 DNS 設定中正確新增 CNAME 記錄。

如需更多疑難排解步驟,請參閱「排解憑證管理工具問題」。

建立憑證對應關係

如要將憑證部署至全域外部應用程式負載平衡器,請建立憑證對應關係

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

更改下列內容:

  • CERTIFICATE_MAP_NAME:憑證對應關係的名稱。

建立憑證對應項目

如要將憑證部署至全域外部應用程式負載平衡器,請建立憑證對應項目。

針對要遷移的每個憑證,建立參照這些憑證的憑證對應項目,如下所示:

  1. 取得憑證詳細資料

  2. 在記錄中,針對 subjectAlternativeNames 欄位列出的每個網域,建立涵蓋該網域的憑證對應項目。如果有多個憑證涵蓋單一網域,您只需要建立一個憑證對應項目,並使用涵蓋該網域的任何有效憑證。

    gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
        --map="CERTIFICATE_MAP_NAME" \
        --certificates="CERTIFICATE_NAMES" \
        --hostname="HOSTNAME"
    

    更改下列內容:

    • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目名稱。
    • CERTIFICATE_MAP_NAME:憑證對應關係的名稱,憑證對應關係項目會附加至該名稱。
    • CERTIFICATE_NAMES:以半形逗號分隔的憑證名稱清單,您要將這些憑證與這個憑證對應項目建立關聯。
    • HOSTNAME:您要與憑證對應項目建立關聯的主機名稱。
  3. 選用:建立主要憑證對應項目,參照與最初附加至 Proxy 的憑證清單中第一個憑證相符的憑證。

    gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
       --map="CERTIFICATE_MAP_NAME" \
       --certificates="CERTIFICATE_NAMES" \
       --set-primary
    

    更改下列內容:

    • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目名稱。
    • CERTIFICATE_MAP_NAME:憑證對應關係的名稱,憑證對應關係項目會附加至該名稱。
    • CERTIFICATE_NAMES:以半形逗號分隔的憑證名稱清單,您要將這些憑證與這個憑證對應項目建立關聯。
  4. 如要驗證您建立的每個憑證對應項目是否處於有效狀態,請執行下列指令:

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

    更改下列內容:

    • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目名稱。
    • CERTIFICATE_MAP_NAME:憑證對應關係的名稱,憑證對應關係項目會附加至該名稱。

    輸出結果會與下列內容相似:

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

選用:在新負載平衡器上測試設定

為盡量減少停機時間,建議您在新負載平衡器上測試新設定的憑證對應,該負載平衡器不提供實際工作環境流量。這樣您就能在正式環境中遷移前,偵測並解決任何錯誤。

請按照下列步驟測試設定:

  1. 使用新的目標 Proxy 建立全域負載平衡器。如要建立負載平衡器,請參閱下列頁面:

  2. 將憑證對應附加至新負載平衡器的目標 Proxy。

    gcloud compute target-https-proxies create TEST_PROXY_NAME \
        --certificate-map="CERTIFICATE_MAP_NAME" \
        --global
    

    更改下列內容:

    • TEST_PROXY_NAME:測試目標 Proxy 的名稱。
    • CERTIFICATE_MAP_NAME:參照憑證對應關係項目和相關聯憑證的憑證對應關係名稱。
  3. 針對遷移作業中包含的每個目標網域,測試與新負載平衡器 IP 位址上網域的連線:

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

    更改下列內容:

    • DOMAIN_NAME:目標網域名稱。
    • IP_ADDRESS:新負載平衡器的 IP 位址。

    如要進一步瞭解如何測試連線,請參閱「使用 OpenSSL 進行測試」。

清除測試環境

清除您在先前步驟中建立的測試環境。

如「刪除負載平衡器」一節所述,刪除測試負載平衡器。

請勿刪除您在上一個步驟中建立的憑證、憑證對應或憑證對應項目。

將新的憑證對應套用至目標負載平衡器

測試新憑證設定並確認有效後,請按照下列步驟,將新憑證對應套用至目標負載平衡器 (代管憑證的負載平衡器)。

  1. 如果您使用全域負載平衡器,請將憑證對應附加至新負載平衡器的目標 Proxy

    gcloud compute target-https-proxies update TARGET_PROXY_NAME \
        --certificate-map="CERTIFICATE_MAP_NAME" \
        --global
    

    更改下列內容:

    • TARGET_PROXY_NAME:目標 Proxy 的名稱。
    • CERTIFICATE_MAP_NAME:參照憑證對應關係項目和相關聯憑證的憑證對應關係名稱。
  2. 等待系統套用設定變更,並讓負載平衡器開始提供新憑證。這項程序通常會在幾分鐘內完成,但有時可能需要 30 分鐘。

憑證已遷移。如果發現流量有任何問題,請從目標 Proxy 中分離新的憑證對應。這會將負載平衡器還原為原始設定。

後續步驟