本教學課程說明如何使用 Certificate Manager,透過負載平衡器授權部署 Google 代管的全球憑證。
負載平衡器授權是取得 Google 代管憑證最有效率的方法。這項功能可讓 DNS 設定保持乾淨,並在設定完成後佈建 TLS 憑證。
下列負載平衡器支援使用負載平衡器授權的 Google 代管憑證:
- 全域外部應用程式負載平衡器
- 傳統版應用程式負載平衡器
- 全域外部 Proxy 網路負載平衡器
目標
本教學課程將說明如何完成下列工作:
- 使用憑證管理工具,建立由公開信任的憑證授權單位 (CA) 核發的 Google 代管憑證,並授權負載平衡器使用。
- 使用目標 HTTPS Proxy,將憑證部署至支援的負載平衡器。
如果您要將憑證部署至正式版網域,系統會在負載平衡器上設定及啟用憑證時,短暫中斷流量。
事前準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager APIs.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager APIs.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
Certificate Manager 擁有者 (
roles/certificatemanager.owner
)建立及管理 Certificate Manager 資源時必須具備這項權限。
Compute 負載平衡器管理員 (
roles/compute.loadBalancerAdmin
) 或 Compute 網路管理員 (roles/compute.networkAdmin
)建立及管理 HTTPS 目標 Proxy 時必須使用。
DNS 管理員 (
roles/dns.admin
)如要使用 Cloud DNS 做為 DNS 解決方案,則必須啟用這項服務。
- Certificate Manager 的角色和權限。
- Compute Engine 的Compute Engine IAM 角色和權限。
- Cloud DNS 的角色和權限。
如要建立全域外部應用程式負載平衡器,請參閱「設定後端為 VM 執行個體群組的全域外部應用程式負載平衡器」。
如要建立傳統版應用程式負載平衡器,請參閱設定後端為代管執行個體群組的傳統版應用程式負載平衡器。
如要建立全域外部 Proxy 網路負載平衡器 (SSL Proxy),請參閱設定具有 VM 執行個體群組後端的全域外部 Proxy 網路負載平衡器 (SSL Proxy)。
如要建立傳統版 Proxy 網路負載平衡器 (SSL Proxy),請參閱設定具備 VM 執行個體群組後端的傳統版 Proxy 網路負載平衡器 (SSL Proxy)。
前往 Google Cloud 控制台的「Certificate Manager」頁面。
在「憑證」分頁中,按一下「新增憑證」。
在「憑證名稱」欄位中,輸入憑證的專屬名稱。
選用:在「說明」欄位中輸入憑證說明。說明可協助您識別憑證。
在「Location」(位置) 部分,選取「Global」。
在「範圍」部分,選取「預設」。
在「Certificate type」(憑證類型) 部分,選取「Create Google-managed certificate」(建立 Google 代管的憑證)。
在「Certificate Authority type」(憑證授權單位類型) 部分,選取「Public」(公開)。
在「網域名稱」欄位中,指定以半形逗號分隔的憑證網域名稱清單。每個網域名稱都必須是完整網域名稱,例如
myorg.example.com
。在「Authorization type」(授權類型) 中,選取「Load balancer authorization」(負載平衡器授權)。
在「標籤」欄位中,指定要與憑證建立關聯的標籤。如要新增標籤,請按一下「新增標籤」
,然後指定標籤的鍵和值。點選「建立」。
新憑證會顯示在憑證清單中。
CERTIFICATE_NAME
:憑證名稱。DOMAIN_NAMES
:以半形逗號分隔的目標網域清單。每個網域名稱都必須是完整網域名稱,例如myorg.example.com
。PROJECT_ID
: Google Cloud 專案的 ID。CERTIFICATE_NAME
:憑證名稱。DOMAIN_NAMES
:以半形逗號分隔的目標網域清單。每個網域名稱都必須是完整網域名稱,例如myorg.example.com
。CERTIFICATE_MAP_ENTRY_NAME
:憑證對應項目名稱。CERTIFICATE_MAP_NAME
:憑證對應關係的名稱,憑證對應關係項目會附加至該名稱。CERTIFICATE_NAME
:要與憑證對應項目建立關聯的憑證名稱。HOSTNAME
:您要與憑證對應項目建立關聯的主機名稱。如要建立涵蓋萬用字元網域和根網域的憑證,請指定含有根網域和萬用字元的主機名稱,例如
example.com
和*.example.com
。此外,您必須指定兩個憑證對應項目,一個用於example.com
,另一個用於*.example.com
。CERTIFICATE_MAP_ENTRY_NAME
:憑證對應項目名稱。CERTIFICATE_NAME
:要與憑證對應項目建立關聯的憑證名稱。PROXY_NAME
:目標 Proxy 的名稱。CERTIFICATE_MAP_NAME
:參照憑證對應關係項目和相關聯憑證的憑證對應關係名稱。URL_MAP
:網址對應表名稱前往 Google Cloud 控制台的「Certificate Manager」頁面。
在「認證」分頁中,查看「狀態」欄中的認證。
- 參照憑證的憑證對應關係已附加至正確的目標 Proxy。
- 目標 Proxy 已附加至正確的負載平衡器。
- 目標網域的 DNS 設定指向目標負載平衡器的 IP 位址。
刪除負載平衡器及其資源。
詳情請參閱「清除負載平衡設定」。
從 Proxy 刪除或分離憑證對應關係。
如要刪除憑證對應,請執行下列指令:
gcloud compute target-https-proxies delete PROXY_NAME
如要保留目標 HTTPS Proxy,請將憑證對應從 Proxy 分離。卸載憑證對應前,請注意下列事項:
- 如果 Proxy 直接附加任何 TLS (SSL) 憑證,卸離憑證對應後,Proxy 會繼續使用這些直接附加的 TLS (SSL) 憑證。
- 如果沒有直接附加至 Proxy 的 TLS (SSL) 憑證,就無法從 Proxy 分離憑證對應。您必須先將至少一個 TLS (SSL) 憑證直接附加至 Proxy,才能卸離憑證對應。
如要卸離憑證對應,請執行下列指令:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
將
PROXY_NAME
替換為目標 Proxy 的名稱。從憑證對應關係中刪除憑證對應關係項目:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
更改下列內容:
CERTIFICATE_MAP_ENTRY_NAME
:憑證對應項目名稱。CERTIFICATE_MAP_NAME
:憑證對應關係的名稱。
刪除憑證對應關係:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
將
CERTIFICATE_MAP_NAME
替換為憑證對應的名稱。刪除 Google 代管的憑證:
主控台
前往 Google Cloud 控制台的「Certificate Manager」頁面。
在「憑證」分頁中,選取憑證的核取方塊。
點選「刪除」。
在出現的對話方塊中,按一下 [Delete] (刪除) 以進行確認。
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME
將
CERTIFICATE_NAME
改為目標憑證的名稱。
必要的角色
請確認您具備下列角色,可完成本教學課程中的工作:
如要瞭解詳情,請參考下列資源:
網域名稱
如要建立憑證,請取得您擁有的網域完整網域名稱 (FQDN)。如果您沒有網域,可以使用 Cloud Domains 註冊網域。
建立負載平衡器
本教學課程假設您已建立及設定負載平衡器的後端、健康狀態檢查、後端服務和網址對應。如果您已建立外部應用程式負載平衡器,請記下網址對應的名稱,因為本教學課程稍後會用到。
如果尚未建立負載平衡器,請參閱下列頁面建立:
建立 Google 代管的憑證,並授權負載平衡器使用
如要建立具有負載平衡器授權的 Google 代管憑證,請執行下列操作:
主控台
gcloud
如要建立全域 Google 代管憑證並授權負載平衡器,請使用 certificate-manager certificates create
指令:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES"
更改下列內容:
Terraform
使用google_certificate_manager_certificate
資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
API
對 certificates.create
方法發出 POST
要求,建立憑證,如下所示:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], } }
更改下列內容:
將憑證部署至負載平衡器
如要部署全球 Google 代管憑證,請使用憑證對應。
建立憑證對應關係
建立憑證對應關係,參照與憑證相關聯的憑證對應項目:
gcloud
如要建立憑證對應檔,請使用 gcloud certificate-manager maps create
指令:
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
將 CERTIFICATE_MAP_NAME
替換為目標憑證對應的名稱。
Terraform
如要建立憑證對應關係,可以使用 google_certificate_manager_certificate_map
資源。
建立憑證對應關係項目
建立憑證對應項目,並將其與憑證和憑證對應關係建立關聯:
gcloud
如要建立憑證對應項目,請使用 gcloud certificate-manager maps entries create
指令:
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
更改下列內容:
Terraform
如要使用根網域建立憑證對應項目,請使用 google_certificate_manager_certificate_map_entry
資源。
如要使用萬用字元網域建立憑證對應項目,請使用 google_certificate_manager_certificate_map_entry
資源。
確認憑證對應項目是否有效
請先確認憑證對應項目是否有效,再將對應的憑證對應項目附加至目標 Proxy。
如要驗證憑證對應項目,請使用 gcloud certificate-manager maps entries describe
指令:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
更改下列內容:
輸出結果會與下列內容相似:
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
將憑證對應附加至目標 Proxy
您可以將憑證對應項附加至新的或現有的目標 Proxy。
gcloud
如要將憑證對應附加至新的目標 Proxy,請使用 gcloud compute target-https-proxies create
指令:
gcloud compute target-https-proxies create PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --url-map="URL_MAP" \ --global
更改下列內容:
如要將憑證對應附加至現有的目標 HTTPS Proxy,請使用 gcloud compute target-https-proxies update
指令。如果不知道現有目標 Proxy 的名稱,請前往「目標 Proxy」頁面,並記下目標 Proxy 的名稱。
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
建立或更新目標 Proxy 後,請執行下列指令進行驗證:
gcloud compute target-https-proxies list
Terraform
如要將憑證對應附加至目標 Proxy,可以使用 google_compute_target_https_proxy
資源。
設定目標 Proxy 時,如果您直接附加 TLS (SSL) 憑證,也透過憑證對應附加憑證,Proxy 會使用憑證對應參照的憑證,並忽略直接附加的 TLS (SSL) 憑證。
驗證憑證狀態
將憑證部署至負載平衡器之前,請先確認憑證是否有效。憑證狀態可能需要幾分鐘的時間才會變更為 ACTIVE
。
主控台
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 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
,請檢查下列事項:
如需更多疑難排解步驟,請參閱「排解憑證管理工具問題」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取這個教學課程所用資源的費用,請將資源全數刪除。