sec_error_unknown_issuer但仅限于Firefox和IE6

Modified on: Wed, 10 Jul 2019 06:40:02 +0800

我最近在我的网站上更新了SSL证书,虽然最初似乎已经正确安装了认证,但我很震惊地发现几小时前HTTPS连接不再能够正确地验证某些浏览器和版本。

目前使用以下浏览器验证确定:

  • Internet Explorer 8
  • Internet Explorer 9
  • Google Chrome 8
  • Opera 11
  • Firefox 3.6.21(在Windows 2000上)

但它没有正确验证:

  • Firefox 3.6.13(在Windows XP上)
  • Firefox 6.01(在Windows 7上)
  • Internet Explorer 6(在Windows 200上)

证书具有GeoTrust Global CA > RapidSSL CA > secure.mydomain.com

有什么可以解释这个问题?这是安装问题吗?浏览器问题?证书问题?

我该如何解决这个问题?

作者:,scatmoi

最佳答案

我遇到了同样的问题 - 购买了一个基本的SSL证书(来自Network Solutions),在nginx下安装它,它在Opera和IE中都运行良好 - 但不是Firefox 3.6.12。这就是我解决问题的方法。请注意,我对我的VPS有root / shell访问权限,我不知道你是否这样做(至少这可能会使你的提供者指向正确的方向)。

找到解决方案的第一步是使用Qualys(按照这个其他答案)。它告诉我链不完整

其次,我使用OpenSSL进行测试/调试。假设你有shell访问权限,你可以执行命令( q 或CTRL-C断开连接):

openssl s_client -connect mysite.com:443

您可能会看到错误“无法获得本地颁发者证书”。这也是一种在外壳中测试它何时工作而不运行Firefox的方法。

SSL证书链

  

有些浏览器可能会抱怨由知名人士签名的证书
  证书颁发机构,而其他浏览器可以接受证书
  没有问题。发生这种情况是因为签发机构签署了
  使用不是的中间证书的服务器证书
  出现在知名可信证书的证书基础上
  与特定浏览器一起分发的权限。在这
  如果权威机构提供链式证书捆绑
  应该连接到签名的服务器证书。服务器
  证书必须出现之前中的链式证书
  合并文件

Nginx配置

就我而言,我从Network Solutions获得了三个文件 - mysite.com.crtAddTrustExternalCARoot.crtNetworkSolutionsDVServerCA.crt。没有 bundle 文件,但可以从其他证书创建一个。经过一些反复试验,我找到了我需要的东西:

$ cat mysite.com.crt NetworkSolutionsDVServerCA.crt > mysite.com.chain.crt

最后一步是使用新文件重新配置我的nginx服务器:

server {
    listen       443;
    ssl          on;
    ssl_certificate        /etc/ssl/certs/mysite.com.chain.crt;
    ssl_certificate_key    /etc/ssl/private/mysite.com.key;

    server_name  mysite.com;
    # and so on
}

在捆绑包中获得正确的证书并重新启动nginx后,openssl报告没有错误,Firefox得到了没有问题的页面,Qualys报告该链是有效的。

Apache配置

由于您正在运行Apache,因此您(或您的提供商)需要使用正确的文件位置为SSL配置,其中一个是缺少的中间链文件:

<VirtualHost 192.168.0.1:443>
    DocumentRoot /var/www/html2
    ServerName www.yourdomain.com
    SSLEngine on
    SSLCertificateFile /path/to/your_domain_name.crt
    SSLCertificateKeyFile /path/to/your_private.key
    SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
作者:Community,Cyclops

相关问答

添加新评论