建立 Media CDN 服務後,您就可以核發並附加 SSL (TLS) 憑證,在瀏覽器和行動應用程式中支援安全連線。
核發代管憑證
如要建立代管憑證並附加至 Media CDN 服務,請完成下列步驟:
- 建立驗證權杖並新增 DNS 記錄,證明您擁有要核發憑證的網域 (即「授權」)。
- 根據授權建立一或多個網域名稱的
EDGE_CACHE
類型憑證。 - 將該憑證附加至一或多個 Edge Cache 服務。
如要授權、建立及將憑證附加至 Edge Cache 服務,您必須具備下列 Identity and Access Management 權限:
certificatemanager.certs.create
certificatemanager.certs.get
certificatemanager.certs.list
certificatemanager.certs.use
certificatemanager.dnsauthorizations.create
certificatemanager.dnsauthorizations.get
certificatemanager.dnsauthorizations.list
certificatemanager.dnsauthorizations.use
如要將現有憑證附加至 Media CDN 服務,使用者必須具備 certificatemanager.certs.get
、certificatemanager.certs.list
和 certificatemanager.certs.use
IAM 權限。
事前準備
- 您必須擁有已註冊的網域名稱,並可更新公開 DNS 記錄。
- 閱讀 SSL 憑證總覽。
建立 DNS 授權
您必須先建立 DNS 授權,證明網域擁有權,才能核發憑證。DNS 授權會使用 DNS-01 ACME 驗證,讓您在將面向使用者的流量導向 Edge Cache 服務前,先核發憑證。
將 domain
的值設為您要建立憑證的網域名稱,如下所示:
gcloud
使用 gcloud certificate-manager dns-authorizations
指令:
gcloud certificate-manager dns-authorizations create DOMAIN_NAME_AUTH \ --domain="DOMAIN_NAME" gcloud certificate-manager dns-authorizations describe DOMAIN_NAME_AUTH
gcloud CLI 會傳回回應,其中包含您需要新增的 DNS 記錄詳細資料。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.example.com. type: CNAME domain: example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
如果網域使用 Cloud DNS,請參閱新增記錄的步驟。如果使用其他 DNS 供應商,請參閱該供應商的說明文件,瞭解如何新增 CNAME 記錄。
- 如要為每個網域核發憑證,請重複這個步驟。
- 憑證可以包含多個網域,您也可以視需要為每個網域核發憑證。取得網域授權後,您就能使用該授權核發憑證。
- 建議您減少憑證總數,並為每個憑證加入服務使用的所有網域名稱。使用多個網域時,用戶端可更常受益於 TLS 續傳,因此效能會有所提升。
- 每個邊緣快取服務最多可參照五個憑證。只要發放的憑證數量較少,就不會超過這個限制。
如要稍後擷取 DNS 記錄值,請對建立 DNS 授權時提供的 authorizationName
提出要求:
建立憑證
新增 DNS 記錄證明您擁有要建立憑證的網域後,即可發出憑證建立要求。
dnsAuthorizations
清單必須與您在程序中先前建立的授權名稱相符。如要將多個網域新增至同一張憑證,請在提出要求時提供 domains[]
清單和相符的 dnsAuthorizations[]
。
如要使用 test.example.com
的授權建立憑證,請呼叫 test-example-com
:
gcloud
使用 gcloud certificate-manager certificates
指令:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAME" \ --dns-authorizations="DOMAIN_NAME_AUTH" \ --scope=EDGE_CACHE
這會建立憑證,其中每個 DNS 授權都處於 AUTHORIZING
狀態,而憑證則處於 PROVISIONING
狀態:
Create request issued for: [DOMAIN_NAME] Waiting for operation [projects/my-project/locations/global/operations/operatio n-1613425627385-5bb66ed644e91-3e2a2f1f-71979cf8] to complete...done. Created certificate [CERTIFICATE_NAME].
Terraform
視下列因素而定,建立憑證可能需要幾分鐘 (最多一小時) 才能完成:
- DNS 供應商傳播設定變更的速度。
- 您嘗試驗證及建立憑證的網域數量。
「state
」欄位會顯示憑證的目前狀態:
- 佈建中 - 憑證仍在佈建中。這可能是因為您最近才提出憑證建立要求。
- 失敗 - 多次嘗試驗證網域或核發憑證後傳回。詳情請參閱
provisioning_issue
、authorization_attempt_info
和failure_reason
欄位。 - 有效:網域已通過驗證,且憑證已佈建。
如要查看憑證狀態,請按照下列步驟操作:
gcloud
使用 gcloud certificate-manager certificates
指令:
gcloud certificate-manager certificates describe CERTIFICATE_NAME
在這個範例中,DNS 授權為 AUTHORIZED
,憑證狀態為 ACTIVE
:
createTime: '2021-02-07T20:03:39.867762684Z' expireTime: '2021-03-09T19:20:41Z' managed: authorizationAttemptInfo: - domain: DOMAIN_NAME state: AUTHORIZED dnsAuthorizations: - projects/111111111111/locations/global/dnsAuthorizations/test-example-com domains: - DOMAIN_NAME state: ACTIVE name: projects/my-project/locations/global/certificates/test-example-com scope: EDGE_CACHE subjectAlternativeNames: - DOMAIN_NAME updateTime: '2021-02-07T20:03:40.297242738Z'
憑證ACTIVE
後,即可附加至 Edge Cache 服務。
將憑證附加至服務
建立代管憑證後,您可以將憑證與一或多個 Edge Cache 服務建立關聯。如要將憑證附加至現有和新服務,請更新服務中的 edgeSslCertificates
清單。
如要將憑證附加至 Edge Cache 服務,您必須具備下列 IAM 權限:
certificatemanager.certs.get
certificatemanager.certs.list
certificatemanager.certs.use
networkservices.edgeCacheServices.get
networkservices.edgeCacheServices.list
networkservices.edgeCacheServices.update
如要將憑證附加至服務,請完成下列步驟。
gcloud
執行 gcloud edge-cache services export
指令,匯出服務的 YAML 檔案:
gcloud edge-cache services export MY_SERVICE \ --destination=my-service.yaml
編輯匯出的 YAML 檔案,加入憑證:
name: MY_SERVICE edgeSslCertificates: - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME
執行 gcloud edge-cache services import
指令:
gcloud edge-cache services import MY_SERVICE \ --source=my-service.yaml
輸出:
Request issued for: [MY_SERVICE] Updated service [MY_SERVICE]
這項指令會傳回服務說明,包括目前附加的 edgeSslCertificates
清單:
name: MY_SERVICE edgeSslCertificates: - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME
更新設定後,憑證會在幾分鐘內傳播至所有邊緣位置。如要在進行 DNS 變更前,測試憑證是否與 Edge Cache 服務相關聯,可以針對與服務相關聯的 IPv4 或 IPv6 位址發出要求。
更換及移除憑證
更新憑證清單即可新增及移除憑證。
使用 gcloud CLI 的 --edge-ssl-certificate
標記時,憑證只會附加至現有憑證清單,不會取代現有憑證。避免您不小心移除有效且處於啟用狀態的憑證。
如要從下列範例中的服務移除 test-example-com
憑證,請使用匯入和匯出指令,將服務匯出為 YAML
name: my-service edgeSslCertificates: - projects/PROJECT_ID/locations/global/certificates/test-example-com - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME
下列指令說明如何匯出服務、移除憑證參照,以及匯入更新後的服務。
gcloud
使用 gcloud edge-cache services
指令:
gcloud edge-cache services export MY_SERVICE --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/MY_SERVICE] to 'my-service.yaml'.
使用偏好的文字編輯器,移除服務不再使用的憑證:
name: MY_SERVICE edgeSslCertificates: - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME
儲存修改後的檔案,然後匯入更新的服務:
gcloud
使用 gcloud edge-cache services
指令:
gcloud edge-cache services import MY_SERVICE --source=my-service.yaml
Request issued for: [MY_SERVICE] Updated service [MY_SERVICE].
憑證可關聯的服務數量沒有上限,且每個邊緣快取服務最多可參照五個憑證。
自行管理的憑證
如有特定用途需要,您可以將自己的憑證上傳至 Media CDN。
如要將憑證和相關聯的金鑰上傳至 Certificate Manager,請按照下列步驟操作:
gcloud
使用 gcloud certificate-manager certificates
指令。請務必為與 Media CDN 相關聯的憑證指定 --scope=EDGE_CACHE
。
gcloud certificate-manager certificates create stream-example-com \ --certificate-file=CERT.pem \ --private-key-file=PRIVATE_KEY.pem \ --scope=EDGE_CACHE
Create request issued for: [stream-example-com] Created certificate [stream-example-com].
上傳憑證後,您可以將憑證附加至 EdgeCacheService,就像附加受管理憑證一樣。
排解憑證核發問題
請參閱疑難排解指南,瞭解如何解決常見的憑證授權和核發錯誤。
後續步驟
- 將所有 HTTP 要求重新導向至 HTTPS,預設加密通訊
- 使用 Logging 查看要求記錄
- 設定已簽署的要求 保護內容
- 對快取金鑰和存留時間進行最佳化調整,提升快取命中率
- 設定進階路徑比對 並新增其他來源