使用代管傳輸層安全標準 (TLS) 憑證和 HTTPS

本頁說明如何關閉及重新啟用受管理 TLS 憑證功能,這項功能會自動提供及續訂 TLS 憑證,以支援 Knative 服務上的 HTTPS 連線。

如要使用 HTTPS,

  • 容器應會繼續在 $PORT 上接聽電話
  • 您必須選擇提供 TLS 憑證的方式:

    • 使用代管的傳輸層安全標準 (TLS) 憑證,系統會視需要自動建立 TLS 憑證,並自動更新。本頁說明這項功能,適用於支援的 Google Kubernetes Engine 版本
    • 使用自己的憑證:您必須自行取得及續約憑證。在某些情況下 (如「限制」一節所述),您必須使用自己的憑證。
  • 如果您使用代管憑證,也必須對應自訂網域,才能使用代管憑證功能。

使用 HTTPS 和 HTTP

根據預設,如果您使用代管憑證,則具有代管憑證的叢集或 Knative 服務會同時公開 HTTP 和 HTTPS 流量。如果只想要 HTTPS 流量,可以啟用 HTTPS 重新導向,強制所有流量僅使用 HTTPS。

疑難排解

如果使用代管 TLS 憑證時發生問題,請參閱代管 TLS 疑難排解頁面。

限制

使用代管的傳輸層安全標準 (TLS) 憑證功能時,請注意下列事項:

  • 在 Google Cloud上,Knative Serving 私人叢集會停用代管 TLS 憑證,且不支援這類憑證。
  • 如要使用代管憑證功能,服務必須對外公開,不能是叢集本機服務,也不能是透過 Virtual Private Cloud 公開的服務。
  • 代管憑證功能僅適用於 Cloud Service Mesh。不支援 Istio 外掛程式或其他 Istio 設定。
  • 這項功能使用 Let's Encrypt,每個註冊網域每週的初始配額上限為 50 個 TLS 憑證。如要申請提高配額,請參閱 Let's Encrypt 說明文件
  • 在其他平台 (例如地端或 AWS) 上執行 Knative serving 叢集時,這項功能會停用。如要使用這項功能,請務必確保叢集可以存取 Let's Encrypt,且 Cloud Service Mesh Ingress 服務已公開至網際網路。

事前準備

本頁的操作說明假設您已符合以下條件:

為整個叢集停用代管傳輸層安全標準 (TLS) 憑證和 HTTPS

更新 ConfigMap config-domainmapping,為叢集停用受管理 TLS:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

為特定網域對應停用代管傳輸層安全標準 (TLS) 和 HTTPS

如有需要,您可以針對特定網域對應關閉代管 TLS:

  1. 新增註解 domains.cloudrun.com/disableAutoTLS: "true"`:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. 確認 HTTPS 無法運作:

    curl https://DOMAIN

  3. 確認服務使用 HTTP:

    gcloud run domain-mappings describe --domain DOMAIN

    DOMAIN 替換成您自己的網域名稱,例如: your-domain.com

    檢查上述指令傳回的 url: 欄位:網址應為 http,而非 https

重新啟用代管的傳輸層安全標準 (TLS) 憑證和 HTTPS

如要重新啟用代管 TLS:

  1. 如果尚未建立服務的網域對應,請按照網域對應頁面的說明,建立網域對應並更新 DNS 記錄。

  2. 更新 ConfigMap config-domainmapping,開啟代管的傳輸層安全標準 (TLS) 憑證和 HTTPS:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. 指令成功執行後,請稍待幾分鐘,然後確認憑證功能是否正常運作:

    kubectl get kcert

    如果憑證已準備就緒,您應該會看到類似以下的訊息:

    NAME              READY   REASON
    your-domain.com              True

    Kcert 可能需要 20 秒至 2 分鐘才能準備就緒。如有任何問題,請參閱這項功能的疑難排解操作說明

驗證成功

  1. 執行下列指令,確認 DNS 記錄是否生效:

    gcloud run domain-mappings describe --domain DOMAIN

    DOMAIN 替換成您自己的網域名稱,例如: your-domain.com

  2. 檢查上述指令傳回的 url: 欄位:網址應為 https,而非 http

  3. 檢查上述指令中 resourceRecords:rrdata 下列出的 IP 位址,並與執行 host DOMAIN 指令時看到的值進行比較。兩者應相同。

為 Knative serving 啟用 HTTPS 重新導向

如果您使用代管的傳輸層安全標準 (TLS) 憑證功能,基於回溯相容性考量,叢集預設會同時公開 HTTP 和 HTTPS 流量。如要強制所有流量僅使用 HTTPS,可以透過叫用下列指令,為現有網域對應啟用 HTTPS 重新導向:

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

其中 DOMAIN 是網域對應的名稱。

  • 如要瞭解如何檢查網域對應、憑證配額、訂單狀態和訂單逾時,以及授權失敗,請參閱代管 TLS 疑難排解
  • 如要瞭解如何使用自己的 TLS 憑證,而非代管 TLS 憑證,請參閱「自備 TLS 憑證」。