排解安全資料傳輸層 (SSL) 憑證問題

疑難排解程序取決於您使用的SSL 憑證類型

排解自行管理的安全資料傳輸層 (SSL) 憑證問題

本指南說明如何排解自行管理 SSL 憑證的設定問題。

無法剖析憑證

Trusted Cloud 需要 PEM 格式的憑證。如果憑證是 PEM 格式,請檢查以下項目:

您可以使用下列 OpenSSL 指令驗證憑證,將 CERTIFICATE_FILE 替換為憑證檔案的路徑:

openssl x509 -in CERTIFICATE_FILE -text -noout

如果 OpenSSL 無法剖析憑證:

缺少慣用名或主體別名

Trusted Cloud 要求憑證必須具備任一共用名稱 (CN) 或主體別名 (SAN) 屬性。如需更多資訊,請參閱「建立 CSR」。

如果兩個屬性都缺少, Trusted 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).

無法剖析私密金鑰

Trusted 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 提示您輸入通關密碼,您必須先從私密金鑰中移除通關密碼,才能將其與 Trusted Cloud搭配使用。您可以使用下列 OpenSSL 指令:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

將預留位置替換為有效值:

  • PRIVATE_KEY_FILE:使用密碼短句保護的私密金鑰路徑
  • REPLACEMENT_PRIVATE_KEY_FILE:您要儲存純文字私密金鑰副本的路徑

中繼憑證即將到期

如果中繼憑證的到期日早於伺服器 (葉) 憑證,這可能表示 CA 未遵循最佳做法。

中繼憑證到期後,您在Trusted Cloud 中使用的葉憑證可能會失效。這取決於 SSL 用戶端,如下所示:

  • 部分 SSL 用戶端只會查看子葉憑證的到期時間,並忽略已過期的中繼憑證。
  • 部分 SSL 用戶端會將含有任何過期中繼憑證的鏈結視為無效,並顯示警告。

如何解決這個問題:

  1. 等待 CA 切換至新的中繼憑證。
  2. 向他們索取新的憑證。
  3. 使用新的金鑰重新上傳新的憑證。

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 憑證:

  1. 將 target-https-proxy 匯出至暫存檔案。

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. 編輯 /tmp/proxy 檔案並移除下列行:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. 匯入 /tmp/proxy 檔案。

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. 選用步驟:刪除 SSL 憑證。

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

更改下列內容:

  • TARGET_PROXY_NAME:目標 https Proxy 資源的名稱。
  • SSL_CERT_NAME:SSL 憑證的名稱。