排解安全資料傳輸層 (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,就會顯示以下錯誤訊息。請務必使用 65537,如 RFC 4871 所述。

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 代理程式資源的名稱。
  • SSL_CERT_NAME:SSL 憑證的名稱。