疑難排解程序取決於您使用的SSL 憑證類型。
排解 Google 代管憑證相關問題
Google 代管的憑證有兩種狀態:
- 受管理狀態
- 網域狀態
受管理狀態
如要檢查憑證狀態,請執行下列指令:
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(name,managed.status)"
受管理狀態的值如下:
受管理狀態 | 說明 |
---|---|
PROVISIONING |
Google 代管的憑證已建立完畢, Google Cloud 正在與憑證授權單位合作來簽署憑證。 從 DNS 和負載平衡器設定變更在網路上全面生效起算,Google 代管的憑證可能需要最多 60 分鐘才能佈建完畢。如果您最近更新了 DNS 設定,變更可能需要相當長的時間才能全面生效。雖然通常只需要幾小時,但有時整個世界傳播完畢可能需要 72 小時。如要進一步瞭解 DNS 散布作業,請參閱「變更的散布作業」。 如果憑證仍處於 |
ACTIVE |
Google 代管的安全資料傳輸層 (SSL) 憑證是由憑證授權單位提供。可能需要額外 30 分鐘,負載平衡器才能使用。 |
PROVISIONING_FAILED |
即使憑證實際上是 ACTIVE ,您仍可能會短暫看到 PROVISIONING_FAILED 。重新檢查狀態。如果狀態維持在 PROVISIONING_FAILED ,代表 Google 代管的憑證已建立完畢,但憑證授權單位無法簽署憑證。請確認您已完成「使用 Google 代管的 SSL 憑證」一文中的所有步驟。Google Cloud 會重試佈建作業,直到成功或狀態變更為 PROVISIONING_FAILED_PERMANENTLY 。
|
PROVISIONING_FAILED_PERMANENTLY |
Google 代管的憑證已建立完畢,但憑證授權單位因 DNS 或負載平衡器設定問題而無法簽署憑證。在這個狀態下, Google Cloud 不會重試佈建作業。 建立替換的 Google 代管 SSL 憑證,並確認替換憑證與負載平衡器的目標 Proxy 建立關聯。 請確認或完成 使用 Google 代管的 SSL 憑證中的所有步驟。之後,您可以 刪除永久無法佈建的憑證。 |
RENEWAL_FAILED |
負載平衡器或 DNS 設定發生問題,因此無法更新 Google 代管的憑證。如果受管理憑證中的任何網域或子網域未使用 A/AAAA 記錄指向負載平衡器的 IP 位址,續約程序就會失敗。系統會繼續使用現有的憑證,但這些憑證很快就會過期。檢查設定。 如果狀態仍為 如要進一步瞭解憑證更新程序,請參閱「 更新 Google 代管的 SSL 憑證」。 |
網域狀態
如要檢查網域狀態,請執行下列指令:
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(managed.domainStatus)"
網域狀態的值說明請見下表。
網域狀態 | 說明 |
---|---|
PROVISIONING |
系統會為網域建立 Google 代管憑證。 Google Cloud 正在與憑證授權單位合作,簽署憑證。 |
ACTIVE |
系統已成功驗證網域,可為其佈建憑證。如果 SSL 憑證適用於多個網域,則只有在所有網域都處於 ACTIVE 狀態,且憑證的代管狀態也為 ACTIVE 時,才能佈建憑證。 |
FAILED_NOT_VISIBLE |
網域的憑證佈建作業尚未完成。以下任一問題都可能是問題所在:
PROVISIONING , Google Cloud 會繼續重試佈建作業,即使網域狀態為 FAILED_NOT_VISIBLE 也一樣。 |
FAILED_CAA_CHECKING |
網域的 CAA 記錄發生設定問題,因此無法佈建憑證。請確認您 已遵循正確的程序。 |
FAILED_CAA_FORBIDDEN |
網域的 CAA 記錄未指定 Google Cloud 需要使用的 CA,因此無法佈建憑證。請確認您已遵循正確的程序。 |
FAILED_RATE_LIMITED |
憑證授權單位收到的憑證簽署要求設有頻率限制,因此無法佈建憑證。您可以 佈建新憑證、切換為使用新憑證,然後刪除先前的憑證,也可以聯絡Google Cloud 支援團隊。 |
代管的憑證續約
為確保證書在續約程序的網域驗證步驟中不會失敗,請詳閱 DNS A 和 AAAA 記錄的相關規定。
多重觀點網域驗證
Google Cloud 會定期向憑證授權單位 (CA) 索取 Google 代管憑證,Google Cloud 與之合作續發憑證的 CA 會使用多角度網域驗證方法,也就是「多角度核發佐證」(MPIC)。在這個程序中,憑證授權單位會檢查網域的 DNS 設定,並嘗試與網域 IP 位址後方的伺服器聯絡,藉此驗證網域控制權。這些驗證作業會從網路上的多個角度進行。如果驗證程序失敗,Google 代管的憑證就無法續約。因此,負載平衡器會向用戶端提供已過期的憑證,導致瀏覽器使用者遇到憑證錯誤,而 API 用戶端則發生連線失敗。
為避免 DNS 記錄設定錯誤導致多重觀點網域驗證失敗,請注意下列事項:
- 網域和任何子網域的 DNS A 記錄 (IPv4) 和 DNS AAAA (IPv6) 記錄僅指向與負載平衡器轉送規則相關聯的 IP 位址 (或多個 IP 位址)。記錄中存在任何其他地址都可能導致驗證失敗。
- CA 會執行 DNS 記錄驗證,並查詢多個位置的 DNS 記錄。請確保 DNS 供應商對所有全球網域驗證要求一律回應。
- 使用 GeoDNS (根據要求位置傳回不同的 IP 位址) 或以位置為依據的 DNS 政策,可能會導致回應不一致,並導致驗證失敗。如果 DNS 供應商使用 GeoDNS,請停用該功能,或確保所有區域都會傳回相同的負載平衡器 IP 位址。
- 您必須在 DNS 設定中明確指定負載平衡器的 IP 位址。CDN 等中介層可能會導致無法預測的行為。IP 位址必須可直接存取,且要求路徑中不得有任何重新導向、防火牆或 CDN。詳情請參閱本文件的「CDN 後方的負載平衡器」一節。
- 建議您使用所選的 DNS 全球傳播檢查工具,確認所有相關 DNS 記錄在全球範圍內都能正確解析且一致。
確認設定變更
設定 DNS 記錄後,您可以建立新的憑證,並將其連結至負載平衡器和現有的憑證,藉此驗證 DNS 記錄是否正確。這個步驟會強制與憑證授權單位進行即時憑證佈建檢查,讓您在幾分鐘內驗證設定變更。否則,自動續約現有憑證可能需要數天或數週的時間,導致設定不確定。
如果憑證狀態變成 ACTIVE
,表示憑證已核發,因此可確認 DNS 設定正確無誤。此時,建議您移除先前的憑證,以免同一個網域有兩個不同的憑證。這項程序不會中斷負載平衡器的流量。
新憑證可做為驗證工具,建立新憑證後,系統會確認使用 MPIC 的多重視角網域驗證功能是否能正確運作。
CDN 後方的負載平衡器
如果負載平衡器已啟用 CDN,要求路徑中的部分第三方 CDN 供應商可能會導致驗證要求失敗。如果 CDN 供應商正在主動代理 HTTP(S) 流量,就可能發生這種情況。
在這種情況下,建議您將憑證遷移至憑證管理工具,並使用 DNS 授權方法來佈建 Google 代管的憑證。後者不需要 CA 與負載平衡器聯絡。
排解自行管理的安全資料傳輸層 (SSL) 憑證問題
本指南說明如何排解自行管理 SSL 憑證的設定問題。
無法剖析憑證
Google Cloud 需要 PEM 格式的憑證。如果憑證是 PEM 格式,請檢查以下項目:
您可以使用下列 OpenSSL 指令驗證憑證,將 CERTIFICATE_FILE
替換為憑證檔案的路徑:
openssl x509 -in CERTIFICATE_FILE -text -noout
如果 OpenSSL 無法剖析憑證:
- 請與 CA 聯絡以取得協助。
- 建立新的私密金鑰和憑證。
缺少慣用名或主體別名
Google Cloud 要求憑證必須具備任一共用名稱 (CN
) 或主體別名 (SAN
) 屬性。如需更多資訊,請參閱「建立 CSR」。
如果兩個屬性都缺少, Google Cloud 會在您嘗試建立自管憑證時顯示類似以下的錯誤訊息:
ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
- The SSL certificate is missing a Common Name(CN) or Subject Alternative
Name(SAN).
無法剖析私密金鑰
Google Cloud 需要符合私密金鑰條件的 PEM 格式私密金鑰。
您可以使用下列 OpenSSL 指令驗證私密金鑰,將 PRIVATE_KEY_FILE
替換為私密金鑰的路徑:
openssl rsa -in PRIVATE_KEY_FILE -check
以下回應表示您的私密金鑰有問題:
unable to load Private Key
Expecting: ANY PRIVATE KEY
RSA key error: n does not equal p q
RSA key error: d e not congruent to 1
RSA key error: dmp1 not congruent to d
RSA key error: dmq1 not congruent to d
RSA key error: iqmp not inverse of q
如要修正這個問題,您必須建立新的私密金鑰和憑證。
含有通關密語的私密金鑰
如果 OpenSSL 提示您輸入通關密碼,您必須先從私密金鑰中移除通關密碼,才能將其與 Google Cloud搭配使用。您可以使用下列 OpenSSL 指令:
openssl rsa -in PRIVATE_KEY_FILE \ -out REPLACEMENT_PRIVATE_KEY_FILE
將預留位置替換為有效值:
PRIVATE_KEY_FILE
:使用密碼短句保護的私密金鑰路徑REPLACEMENT_PRIVATE_KEY_FILE
:您要儲存純文字私密金鑰副本的路徑
中繼憑證即將到期
如果中繼憑證的到期日早於伺服器 (葉) 憑證,這可能表示 CA 未遵循最佳做法。
中繼憑證到期後,您在Google Cloud 中使用的葉憑證可能會失效。這取決於 SSL 用戶端,如下所示:
- 部分 SSL 用戶端只會查看子葉憑證的到期時間,並忽略已過期的中繼憑證。
- 部分 SSL 用戶端會將含有任何過期中繼憑證的鏈結視為無效,並顯示警告。
如何解決這個問題:
- 等待 CA 切換至新的中繼憑證。
- 向他們索取新的憑證。
- 使用新的金鑰重新上傳新的憑證。
CA 也可能允許中繼憑證的相互簽署。請向 CA 確認。
RSA 公鑰指數過大
如果 RSA 公開指數大於 65537,就會顯示以下錯誤訊息。請務必使用 RFC 4871 中指定的 65537
。
ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
- The RSA public exponent is too large.
從目標 Proxy 中移除 SSL 憑證
下列步驟說明如何移除附加至目標 HTTPS Proxy 的單一 SSL 憑證:
將 target-https-proxy 匯出至暫存檔案。
gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
編輯
/tmp/proxy
檔案並移除下列行:sslCertificates: - https://www.googleapis.com/compute/v1/projects/...
匯入
/tmp/proxy
檔案。gcloud compute target-https-proxies import TARGET_PROXY_NAME \ --source=/tmp/proxy
選用步驟:刪除 SSL 憑證。
gcloud compute ssl-certificates delete SSL_CERT_NAME
更改下列內容:
TARGET_PROXY_NAME
:目標 https Proxy 資源的名稱。SSL_CERT_NAME
:SSL 憑證的名稱。