sca*_*moi 6 ssl firefox ssl-certificate apache-2.2
我最近在我的网站上更新了 SSL 证书,虽然最初看起来证书安装正确,但几个小时前我震惊地发现 HTTPS 连接不再正确地通过某些浏览器和版本进行身份验证。
它目前通过以下浏览器进行身份验证:
但它没有正确验证:
该证书的证书路径为GeoTrust Global CA > RapidSSL CA > secure.mydomain.com
.
什么可以解释这个问题?这是安装问题吗?浏览器问题?证书问题?
我该如何解决这个问题?
我遇到了同样的问题——购买了一个基本的 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
Run Code Online (Sandbox Code Playgroud)
您可能会看到“无法获得本地颁发者证书”的错误消息。这也是一种在 shell 中测试它何时工作的方法,而无需运行 Firefox。
某些浏览器可能会抱怨由知名证书颁发机构签署的证书,而其他浏览器可能会接受该证书而不会出现问题。发生这种情况是因为颁发机构已使用中间证书对服务器证书进行签名,该中间证书不存在于随特定浏览器分发的知名可信证书颁发机构的证书库中。在这种情况下,权威机构提供了一组链接的证书,这些证书应该连接到签名的服务器证书。服务器证书必须出现在组合文件中的链式证书之前
就我而言,我已经从网络解决方案得到了三个文件- mysite.com.crt
,AddTrustExternalCARoot.crt
和NetworkSolutionsDVServerCA.crt
。没有捆绑文件,但可以从其他证书创建一个。经过一些反复试验,我发现我需要的是:
$ cat mysite.com.crt NetworkSolutionsDVServerCA.crt > mysite.com.chain.crt
Run Code Online (Sandbox Code Playgroud)
最后一步是使用新文件重新配置我的 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
}
Run Code Online (Sandbox Code Playgroud)
在捆绑包中获得正确的证书并重新启动 nginx 后,openssl
没有报告错误,Firefox 获得了没有问题的页面,而 Qualys 报告链是有效的。
由于您正在运行 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>
Run Code Online (Sandbox Code Playgroud)
在您的域上尝试以下测试:
Qualys:https : //www.ssllabs.com/ssldb/index.html
数字证书:http : //www.digicert.com/help/
我发现两者对于解决随机 SSL 证书问题都非常方便。
归档时间: |
|
查看次数: |
23005 次 |
最近记录: |