通常,在虚拟主机上使用以下指令设置ssl:
Listen 443
SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt来自:若要为具有多个vhost的服务器上的单个域启用SSL,此配置是否有效?
SSLCertificateFile和SSLCertificateChainFile有什么区别?客户已经从GoDaddy购买了一个CA密钥。看起来GoDaddy只提供SSLCertificateFile (.crt文件)和SSLCertificateKeyFile (.key文件),而不提供SSLCertificateChainFile。
如果没有指定的SSLCertificateChainFile路径,我的ssl还能工作吗?
另外,是否存在应该放置这些文件的规范路径?
发布于 2012-04-24 15:51:21
严格地说,您从来不需要使用链来使SSL正常工作。
您总是需要一个包含该证书正确密钥的SSLCertificateFile,该SSLCertificateKeyFile包含该证书的正确密钥。
问题是,如果您给Apache的全部是证书,那么它提供给连接客户端的就是证书--这并不能说明关于SSL证书的全部情况。它的意思是,“我是由某人签名的,但我不会告诉你他们”。
这通常工作得很好,因为大多数客户端系统都有大量CA证书(根证书和中间证书)存储,它可以检查是否有匹配的签名关系来建立信任。但是,有时这不起作用;通常情况下,您将遇到的问题是一个客户端,它不为已签署证书的中间CA持有证书。
这就是链的来源;它让Apache向客户机展示信任关系是什么样子,这可以帮助客户端填补您的证书、他们信任的根和他们不知道的中间层之间的空白。该链可以通过以下两种方式之一包括在您的配置中:
SSLCertificateFile设置的文件中,按顺序排列在服务器证书之后的新行中(根目录应该在底部)。如果像这样设置它,您将希望SSLCertificateChainFile指向与SSLCertificateFile完全相同的文件。SSLCertificateChainFile指令中配置的单独文件中,颁发服务器证书的CA证书应该放在文件的第一位,然后是根目录上的任何其他证书。检查您现在拥有的证书文件--我打赌它没有包含链数据。它通常运行良好,但最终会导致某个浏览器或其他浏览器的问题。
发布于 2012-04-24 15:45:54
这里给出了一个很好的解释,说明了选择一个还是另一个的区别和可观察到的影响:
发布于 2012-04-24 15:51:01
实际上,GoDaddy确实给出了一个中间链:
http://support.godaddy.com/help/5238
这是更多的讨论。
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
来自GoDaddy的电子邮件告诉您如何下载新证书,还将包含有关中间证书文件的信息。它就在底部的某个地方,也许是在你的眼睛从言语和升华中呆滞下来之后。
如果不包括适当的SSLCertificateChainFile指令,会发生什么:您将在浏览器中看到一个大的红色警告,因为您的SSL站点不会在浏览器中进行验证,因为它们无法跟踪从站点的证书到浏览器所知道的证书颁发机构拥有的证书链。
https://serverfault.com/questions/382633
复制相似问题