并非所有浏览器都信任 Starfield 通配符 SSL 证书

Aus*_*ron 9 ssl godaddy ssl-certificate centos6

我不知道我还可以尝试什么来使用 Starfield 通配符 SSL 证书调试这个问题。

问题在于,在某些浏览器(例如,Safari 或您可以为 OS X 10.5.8 获​​得的最新版本的 chrome)中,证书显示为不受信任,即使在根域中也是如此。

我的服务器设置/背景信息:

  • 一般 LAMP 设置 - CentOS 6.3 - 在 Godaddy VPS 上
  • Starfield Technologies 通配符 SSL 证书
  • 使用 Godaddy 支持页面中的说明进行安装
  • ssl.conf 行基本如下:

    SSLCertificateFile /path/to/cert/mysite.com.cert
    SSLCertificateKeyFile /path/to/cert/mysite.key
    SSLCertificateChainFile /path/to/cert/sf_bundle.crt

一切似乎都运行良好,直到有一天晚上我注意到 OS X 中的问题时,我认为它与浏览器版本相关,但只能在该特定机器上复制它。

我尝试过的:

  • 从 Godaddy 的证书存储库和 Starfield 的存储库版本更新 sf_bundle.crt
  • 遵循Jim Phares 的这个 ServerFault 回答- 将 ChainFile 行更改为 Starfield 存储库中的 sf_intermediate.crt
  • 在我的网址上 使用http://www.sslshopper.com/ssl-checker.html
    • 它表示该域已正确列在证书上,但出现错误,内容为“并非所有 Web 浏览器都信任该证书”。您可能需要安装中间/链证书以将其链接到受信任的根证书。

接下来我可以尝试什么来解决不受信任的证书问题?

让我知道是否需要任何其他信息来帮助调试此问题。提前致谢!

解决方案:

My problem ended up being that I had forgotten to add the SSLCertificateChainFile line to the virtual host(s) in my httpd.conf and had only been editing those lines in ssl.conf instead, thanks for all the suggestions!

chu*_*utz 10

你可以做两件事:

  1. 验证中间链
  2. 清理中间链

验证中间链

正如错误似乎表明的那样,您的中间证书链有问题。您应该检查您从哪里获得证书以及您是否获得了正确的中间包。

您应该使用openssl x509 -noout -hashopenssl x509 -noout -issuer_hash命令验证链中每个证书的“哈希”和“颁发者的哈希” 。试试这个来获取你的证书的颁发者哈希:

cat /path/to/cert/mysite.com.cert | openssl x509 -noout -issuer_hash
Run Code Online (Sandbox Code Playgroud)

然后尝试在sf_bundle.crt您指定为SSLCertificateChainFile. 您可能需要提取证书(或者只是将它们复制粘贴到命令中):

cat first_cert_from_sf_bundle.crt | openssl x509 -noout -hash
Run Code Online (Sandbox Code Playgroud)

检查所有这些。如果没有人有这个哈希值,那么就出问题了。继续进行这些检查,直到找到具有相同-hash-issuer_hash. 这是您的根证书。

如果缺少某些内容,您可以在此处查看其他中间文件https://certs.starfieldtech.com/anonymous/repository.seam。下载这些并将它们-hash-issuer_hash您遇到的问题进行比较。

如果一切正常,那么......

清理中间链

当您遇到奇怪的验证错误时,我已经看到这也有帮助。确保您的中间链仅以正确的顺序列出所需的证书(如果采用 PEM 格式会更容易)。换句话说,如果您的链是Your cert -> cert A -> cert B -> Starfield Root cert. 尝试按此顺序附加这些(您可以跳过第一个和最后一个),以便您的中间链看起来像这样:

-----BEGIN CERTIFICATE-----
cert A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
cert B
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

我个人喜欢将所有这些证书(个人证书,然后是中间证书,然后是根证书)保存在同一个文件中。然后我只是将此文件指定为SSLCertificateFileSSLCertificateChainFile.