jos*_*ing 5 security ssl https ssl-certificate
我在使用 Media Temples Dedicated Virtual 4.0 托管的域上安装了通配符 SSL 证书。这是我尝试通过 SSL 提供的一个简单示例页面:https : //ssltest.bblhosted.com/
现在,我问过的其他人(大约 4 或 5 个)说该站点在他们的计算机上运行良好,在各种浏览器中都没有安全警告。但是,我在我的计算机上得到了不一致的结果。
这是我的结果。我正在运行最新的 OSX,通过 Parallels 运行 Windows 7,以及所有浏览器的最新版本:
OSX / Firefox:挂锁显示,没问题。 Windows 7 / Firefox:警告 - “此连接不受信任”
OSX / Chrome:警告 - “此站点的安全性不受信任!” Windows 7 / Chrome:绿色挂锁 - 'RappidSSL CA 验证身份'。
OSX / Opera:警告 - '此服务器的证书链不完整,签名者未注册。接受?' Windows 7 / Opera:挂锁显示“安全连接,干净的安全记录”。
OSX / Safari:警告 - “Safari 无法验证网站的身份”
Windows 7 / IE:挂锁显示“此与服务器的连接已加密”。
我的问题是,任何人都可以提供有关可能导致此问题的原因的任何见解,或者如何解决它?难道这只是我电脑的问题,如果是,那是什么?特别奇怪的是,对于相同的浏览器,我在 OSX 和 Windows 7 上得到了相反的结果。
即使您可以评论您正在使用的浏览器/操作系统,以及它是否适合您,那也很棒!谢谢。
_______ 更新:
来自 Rapid SSL 的初始电子邮件给了我一份证书和一份 CA 证书。我已将其更新为在此处包含 Christopher Perrin 链接到的两个 CA 证书。
我已经使用Rapid SSL 的工具测试了 ssltest.bblhosted.com,它说一切都设置正确(尽管该工具在我更改 CA 证书之前也成功了)。
此工具出现错误 - 并表示这很可能是中间证书问题。
我正在通过 Plesk 更新证书,但确实收到警告“警告:CA 证书未签署证书。”,但根据此,您通常可以忽略该警告。
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 中,您可以选择SSLCertificateChainFile
。将此设置为您保存RapidSSL CA Bundle的路径。
另一种选择是将链证书添加到您自己的证书中,方法是将它们附加到您的证书中
cat mycert.pem RapidSSL_CA_bundle.pem >> mychainedcert.pem
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。
您显然是在 RapidSSL 上购买的证书。RapidSSL 虽然不是您的浏览器信任的 CA 之一。这没有问题,因为您的浏览器信任 GeoTrust,而 GeoTrust 信任 RapidSSL。您只需要向浏览器显示证明这一点的证书。这就是您需要包含链文件的原因。
好吧,克里斯托弗·佩林(Christopher Perrin)让我走上了正轨SSLCertificateChainFile
——谢谢。以下是具体细节,以防他们帮助其他人。我使用的是 Plesk 11,显然我所指的路径对于其他人来说会有所不同。
当我创建子域 ssltest.bblhosted.com 时,Plesk 会创建一个文件/var/www/vhosts/ssltest.bblhosted.com/conf/13558069200.18494000_httpd.include
(或类似文件)。该文件有效地实现了 vhost.conf 文件(或 vhost_ssl.conf)的目的,只不过它是由 plesk 自动生成的,并且每次您通过 Plesk 更改设置时都会自动覆盖。
该文件包含以下行:
SSLCertificateFile /usr/local/psa/var/certificates/cert-Eq8jue
Run Code Online (Sandbox Code Playgroud)
它显示在哪里可以找到我的 SSL 证书。它不包含指示在哪里可以找到 CA 证书的行。所以它应该包含以下行:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
Run Code Online (Sandbox Code Playgroud)
(显然该路径应该指向您自己的 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
Run Code Online (Sandbox Code Playgroud)
因此,我创建/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
并向其中添加了单行:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
Run Code Online (Sandbox Code Playgroud)
除了这一行之外,您不需要添加任何其他内容。据我所知,所有其他设置仍将从 Plesk 生成的默认 httpd.include 文件中获取。
现在,您必须告诉 Plesk 查找 vhost_ssl.conf 文件,因为默认情况下它不会 - 即使您已经创建了它!通过 SSH 登录并执行以下命令来执行此操作:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
Run Code Online (Sandbox Code Playgroud)
这将告诉 Plesk 查找所有域的 vhost.conf(和 vhost_ssl.conf)。如果需要,您也可以仅针对单个域执行此操作。
最后,重新启动 Apache,SSL 就可以工作了!
请注意,如果您添加另一个子域,则需要再次执行整个过程,包括执行终端命令以使 Plesk 查找新域或子域的 vhost.conf 和 vhost_ssl.conf。