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

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

核發代管憑證

如要建立代管憑證並將其附加至 Media CDN 服務,您必須執行下列操作:

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

事前準備

建立 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 恢復功能中受益。
  • 每個 Edge Cache 服務最多可參照五個憑證。您可以減少憑證的核發數量,以便維持在這個限制內。

如果您需要在日後擷取 DNS 記錄值,請針對您在建立 DNS 授權時提供的 authorizationName 提出要求:

建立憑證

新增 DNS 記錄後,系統就會驗證您要為其建立憑證的網域擁有權,您就可以發出憑證建立要求。

dnsAuthorizations 清單必須與您先前在程序中建立的現有授權名稱相符。如果您想將多個網域新增至同一個憑證,請在提出要求時提供 domains[] 和相符的 dnsAuthorizations[] 清單。

如要使用名為 test-example-comtest.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

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 欄位會顯示憑證目前的狀態:

  • 佈建:憑證仍在佈建中。這可能是因為您最近才提出憑證建立要求。
  • FAILED:多次嘗試驗證網域或核發憑證後傳回。詳情請參閱 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 服務

將憑證附加至服務

建立代管憑證後,您可以將其與一或多個邊緣快取服務建立關聯。您可以更新服務中的 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,就像管理憑證一樣。

排解憑證核發問題

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

後續步驟