1

好的,我最近将 Comodo SSL 证书从我以前的 Bluehost 帐户转移到了我的新机架空间云服务器。(灯堆栈)

基本上我只是复制粘贴了服务器证书和密钥并检查以确保它已正确安装。现在我遇到了一些问题,有时我会听到人们说他们收到“不受信任的连接错误”,而其他人根本没有收到此错误。

最近有人给我发了一张他们错误的屏幕截图,上面写着:这个证书不可信,因为没有提供颁发者链。

他们注意到这一点的浏览器是 safari,所以我清除了 safari 中的所有历史数据并打开了该网站,但我没有看到该错误。

有谁知道如何解决这样的问题?谢谢!

当我输入 openssl s_client... 我得到:

Certificate chain
 0 s:/OU=Domain Control Validated/OU=Hosted by BlueHost.Com, INC/OU=PositiveSSL/CN=www.sitename.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
 1 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
 2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
4

1 回答 1

3

您很可能缺少“链”或中间证书(有些人的浏览器中可能有,有些人没有)。

解决此问题的最简单方法是查看证书上的颁发者详细信息;并找到该证书。然后查看该证书的颁发者详细信息 - 直到您点击“根” - 这是一个自签名证书(主题与颁发者相同)。

一旦你将它们全部连接到一个文件中并指向 SSLCertificateChainFile 。

你的 httpd.conf 然后看起来像

   SSLEngine on
   SSLCertificateKeyFile    .../your-key.key
   SSLCertificateFile       .../your-cert.pem
   SSLCertificateChainFile  .../ca-bundle.pem

一些 CA 在颁发证书时将此文件作为“ca-bundle”(https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1203)提供。大多数没有。

因此,在这种情况下,您需要创建它。正在做

openssl x509 -in <your cert.pem> -noout -issuer

将为您提供确切的发行者字符串。谷歌搜索它通常会给你你需要的中间证书(通常在你的 CA 的支持站点上)。一旦你有了 - 重复上面并继续下去,直到你到达最后一个 - 发行者与主题相同。

完成后 - 重新启动网络服务器,就可以了。

如果你想验证你得到了整个链 - 然后使用命令

openssl s_client -connect <your domain name>:443

并检查输出是否以:

0 s:/C=GB/OU=Domain Control Validated/CN=<your domain>
  i:/C=BE/O=Comodo/CN=Comodo foobar
....
3 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
  i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

并且至少有一个条目(上例中为 3 个),其中您有一个最终根;S 与 i 相同。如果您只看到一个条目

0 s:/C=GB/OU=Domain Control Validated/CN=<your domain>
  i:/C=BE/O=Comodo/CN=Comodo foobar

仅此而已 - 然后再次检查您的链 - 并确保它包含一个主题与您的发行人相同的证书(在上面的示例中为“/C=BE/O=Comodo/CN=Comodo foobar”)。

您可以通过解析包中的每个 blob 来检查这一点

 openssl x509 -noout -in file.pem -subject -issuer

其中 file.pem 是 SSLCertificateChainFile 文件的一大块。

警告:以上是一个轻微的简化——一些链可能有多个根/交叉签名。在那种情况下,它会变得有点复杂——但遵循上面的例子。

于 2012-06-26T16:51:25.297 回答