建立 Media CDN 服務 (或多個服務) 後,您可以核發並附加 SSL (TLS) 憑證,以便在瀏覽器和行動應用程式中支援安全連線。
核發代管憑證
如要建立代管憑證並將其附加至 Media CDN 服務,您必須執行下列操作:
- 建立挑戰權杖並新增 DNS 記錄,證明您擁有要為其核發憑證的網域 (「授權」)。
- 根據該授權,建立含有一或多個網域名稱的
EDGE_CACHE
類型憑證。 - 將該憑證附加至一或多個 Edge Cache 服務。
您必須具備下列 Identity and Access Management 權限,才能授權、建立及將憑證附加至 Edge Cache 服務:
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 恢復功能中受益。
- 每個 Edge Cache 服務最多可參照五個憑證。您可以減少憑證的核發數量,以便維持在這個限制內。
如果您需要在日後擷取 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
這會在 AUTHORIZING
狀態中建立憑證,其中包含每個 DNS 授權,以及 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
欄位會顯示憑證目前的狀態:
- 佈建:憑證仍在佈建中。這可能是因為您最近才提出憑證建立要求。
- FAILED:多次嘗試驗證網域或核發憑證後傳回。詳情請參閱
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 服務。
將憑證附加至服務
建立代管憑證後,您可以將其與一或多個邊緣快取服務建立關聯。您可以更新服務中的 edgeSslCertificates
清單,為現有和新服務附加憑證。
您必須具備下列 IAM 權限,才能將憑證附加至 Edge Cache 服務:
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].
憑證可連結的服務數量沒有限制,每個 Edge Cache 服務最多可參照五個憑證。
自行管理的憑證
如果有特定用途需要使用憑證,您可以將自己的憑證上傳至 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 查看要求記錄檔
- 設定已簽署的要求來保護內容
- 最佳化快取金鑰和存留時間,提升快取命中率
- 設定進階路徑比對並新增其他來源