我在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