設定安全資料傳輸層 (SSL) (傳輸層安全標準 (TLS)) 憑證

建立 Media CDN 服務後,您就可以核發並附加 SSL (TLS) 憑證,在瀏覽器和行動應用程式中支援安全連線。

核發代管憑證

如要建立代管憑證並附加至 Media CDN 服務,請完成下列步驟:

  1. 建立驗證權杖並新增 DNS 記錄,證明您擁有要核發憑證的網域 (即「授權」)。
  2. 根據授權建立一或多個網域名稱的 EDGE_CACHE 類型憑證。
  3. 將該憑證附加至一或多個 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.getcertificatemanager.certs.listcertificatemanager.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

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "example-dns-auth"
  description = "example dns authorization "
  domain      = "test.example.com"
}

如果網域使用 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

resource "google_certificate_manager_certificate" "default" {
  name        = "example-dns-cert"
  description = "example dns certificate"
  scope       = "EDGE_CACHE"
  managed {
    domains = [
      google_certificate_manager_dns_authorization.default.domain,
    ]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id,
    ]
  }
}

視下列因素而定,建立憑證可能需要幾分鐘 (最多一小時) 才能完成:

  • DNS 供應商傳播設定變更的速度。
  • 您嘗試驗證及建立憑證的網域數量。

state」欄位會顯示憑證的目前狀態:

  • 佈建中 - 憑證仍在佈建中。這可能是因為您最近才提出憑證建立要求。
  • 失敗 - 多次嘗試驗證網域或核發憑證後傳回。詳情請參閱 provisioning_issueauthorization_attempt_infofailure_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,就像附加受管理憑證一樣。

排解憑證核發問題

請參閱疑難排解指南,瞭解如何解決常見的憑證授權和核發錯誤。

後續步驟