对 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.

从目标代理中移除 SSL 证书

以下步骤演示了如何移除关联到目标 https 代理的单个 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 证书的名称。