通配符SSL在浏览器/操作系统/计算机上performance不一致

我在Media Temples Dedicated Virtual 4.0托pipe的域中安装了通配符SSL证书。 以下是我试图通过SSL提供的一个简单示例页面: https : //ssltest.bblhosted.com/

现在,我问的其他人(大约4或5)说,该网站在各种浏览器,他们的电脑上工作正常,没有安全警告。 但是,我的电脑上出现不一致的结果。

这是我的结果。 我正在运行最新的OSX,通过Parallels运行的Windows 7以及所有浏览器的最新版本:

OSX / Firefox:挂锁显示,没有问题。 Windows 7 / Firefox:警告 – “此连接不受信任”

OSX / Chrome:警告 – “此网站的安全性不受信任!” Windows 7 / Chrome:绿色挂锁 – 由RappidSSL CAvalidation的身份。

OSX / Opera:警告 – “此服务器的证书链不完整,签名者未注册。 接受?' Windows 7 / Opera:挂锁显示'安全连接,清洁安全logging'。

OSX / Safari:警告 – “Safari无法validation网站的身份”

Windows 7 / IE:挂锁显示“与服务器的连接已encryption”。

我的问题是,任何人都可以提供任何可能导致这个问题的洞察力,或者如何去解决这个问题? 难道这只是我电脑上的一个问题,如果是的话,是什么? 特别奇怪的是,在OSX和Windows 7上,对于相同的浏览器,我得到了相反的结果。

即使你只是评论你正在使用的浏览器/操作系统,以及它是否适用于你,那也太棒了! 谢谢。

_______更新:

Rapid SSL的初始邮件给了我一个证书和一个CA证书。 我已经更新了,包括克里斯托弗·佩林(Christopher Perrin)链接到的两个CA证书。

我已经使用Rapid SSL的工具testing了ssltest.bblhosted.com,并且表示所有设置都正确(尽pipe该工具在更改CA证书之前也取得了成功)。

这个工具给出了一个错误 – 并说这很可能是一个中间证书问题。

我正在通过Plesk更新证书,而且我收到警告“警告:CA证书没有签署证书”,尽pipe如此,您通常可以忽略该警告。

SSL适用于https://www.bblhosted.com/,https://bblhosted.com/和https://anythinggoeshere.bblhosted.com/ – 对于已明确设置的子域名不起作用。

在var / log / httpd / error_log中,我有一堆错误,如:“RSA服务器证书通配符CommonName(CN)`* .bblhosted.com'不匹配服务器名!?

在ssl_error_log中,我有一堆错误,如:“[警告] RSA服务器证书是CA证书(BasicConstraints:CA == TRUE!?)”

我没有足够的经验知道他们的意思。 我明天继续战斗!

您的证书链可能不完整。 您可能需要添加RapidSSL CA Bundle 。 到你的证书。

在Apache中,您可以selectSSLCertificateChainFile 。 将其设置为您保存RapidSSL CA Bundle的path。

另一种方法是通过将链接证书添加到您的证书中来添加链接证书

 cat mycert.pem RapidSSL_CA_bundle.pem >> mychainedcert.pem 

这应该解决问题。

说明

您显然在RapidSSL上购买了您的证书。 RapidSSL虽然不是您的浏览器信任的CA之一。 这不是问题,因为您的浏览器信任GeoTrust和GeoTrust信任RapidSSL。 你只需要向浏览器显示certificate这一点的证书。 这就是为什么你需要包含链文件。

好的,所以克里斯托弗·佩林把我的SSLCertificateChainFile正确的轨道 – 谢谢。 以下是具体情况,以防他人帮助别人。 我使用的是Plesk 11,显然我提到的path对于其他人来说是不同的。

当我创build子域ssltest.bblhosted.com时,Plesk会在/var/www/vhosts/ssltest.bblhosted.com/conf/13558069200.18494000_httpd.include (或类似)中创build一个文件。 该文件有效地服务于vhost.conf文件(或vhost_ssl.conf),除了它是由plesk自动生成的,并且每次通过Plesk更改设置时都会自动覆盖该文件。

该文件包含以下行:

 SSLCertificateFile /usr/local/psa/var/certificates/cert-Eq8jue 

这显示了在哪里可以find我的SSL证书。 它不包含的是指示在哪里查找CA证书的行。 所以它应该包含这一行:

 SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO 

(显然这个path应该指向你自己的CA证书)。 据我所知,这行不包含的事实是Plesk中的一个错误。 您可以将该行添加到该文件,直接在SSLCertificateFile行下面,然后重新启动Apache,然后它将工作 – 但是,如果这样做,下次更改Plesk中该域的设置时,该文件将被覆盖你会失去你的改变。 在文件顶部,Plesk给出了这个警告:

 #ATTENTION! # #DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, #SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. # #IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES: #/var/www/vhosts/ssltest.bblhosted.com/conf/vhost.conf #/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf 

所以,我创build了/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf并添加了单行:

 SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO 

除了那一行之外,你不需要添加任何东西。 据我所知,所有其他设置仍然会从Plesk生成的默认httpd.include文件中获取。

现在,您必须告诉Plesk查找vhost_ssl.conf文件,因为它不会默认 – 即使您创build了它! 通过SSHlogin并执行以下命令来完成此操作:

 /usr/local/psa/admin/bin/httpdmng --reconfigure-all 

这将告诉Plesk为所有域查找vhost.conf(和vhost_ssl.conf)。 如果需要的话,您也可以只为一个域进行。

最后,重启Apache,SSL工作!

请注意,如果您添加了另一个子域,则需要再次执行整个过程,包括执行terminal命令,使Plesk为您的新域或子域寻找vhost.conf和vhost_ssl.conf。

我最近configuration了这种情况。 我将不得不进一步核实,但:

在检查您的证书详细信息时,您将获得:

Nome DNS:* .bblhosted.com Nome DNS:bblhosted.com

你有bdlhosted.com作为AltDNSName。

通过为一个根域颁发一个证书,为每个其他子域颁发一个通配证书,我解决了您遇到的问题。

这样,证书的模式掩码将以浏览器应该检查的所有可能的方式匹配给定的URL。

TL; DR:获得两个新的证书,一个只用“bblhosted.com”作为altDnsName / CN,另一个用“* .bblhosted.com”。

编辑:你可以通过在http://www.cacert.org上运行一些免费的证书来检查是否是这个问题。 我没有打扰商业证书,我有那些作为我的主要SSL证书。 唯一的麻烦是大多数操作系统不提供他们的根证书,所以你必须自己安装它。

证书可以包含一个特殊的机构信息访问扩展( RFC-3280 ),其中包含颁发者证书的URL。 大多数浏览器都可以使用AIA扩展下载缺less的中间证书来完成证书链。 但有些客户端(移动浏览器,OpenSSL)不支持这种扩展,所以他们报告这样的证书不可信。

您可以手动解决不完整的证书链问题,方法是将证书中的所有证书连接到受信任的根证书(独占,按此顺序),以防止出现此类问题。 请注意,受信任的根证书不应该存在,因为它已包含在系统的根证书存储区中。

你应该能够从发行者那里获取中间证书,并且自己将它们连接在一起。 顺便说一句,我已经写了一个脚本来自动化的程序,它循环AIA扩展产生正确的链接证书的输出。 https://github.com/zakjan/cert-chain-resolver