SSLCertificateFile和SSLCertificateChainFile之间的区别?


35

通常,对于虚拟主机,将使用以下指令设置ssl:

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

来自: 要在具有多个虚拟主机的服务器上为单个域启用SSL,此配置是否有效?

SSLCertificateFile和之间有什么区别SSLCertificateChainFile?客户已从GoDaddy购买了CA密钥。看起来GoDaddy仅提供了SSLCertificateFile(.crt文件)和SSLCertificateKeyFile(.key文件),而不提供SSLCertificateChainFile

如果未SSLCertificateChainFile指定路径,我的ssl仍然可以工作吗?

另外,是否有规范的路径放置这些文件?


1
最常见的地方,我看到人们把证书文件中/etc/ssl/usr/local/etc/ssl或者在一个ssl子目录下的网站(例如,/home/www/example.com/data有网站,那么home/www/example.com/ssl有证书)。
克里斯·S

Answers:


49

严格来说,您不需要SSL链即可发挥作用。

您始终需要一个SSLCertificateFile带有SSLCertificateKeyFile正确证书密钥的证书。

问题是,如果您给Apache的全部是证书,那么它给连接客户端所需要的就是证书-这不能说明SSL证书的全部情况。这是说:“我被某人签名,但我不会告诉您有关他们的信息”。

由于大多数客户端系统都有大量的CA证书存储(根证书和中间证书),因此可以正常进行检查,以检查是否存在匹配的签名关系以建立信任。但是,有时候这是行不通的。通常,您遇到的问题是客户端,该客户端不持有对签署您的证书的中间CA的证书。

那就是链条进入的地方;它可以让Apache确切地向客户端显示信任关系的样子,这可以帮助客户端填补证书,他们信任的根以及他们不知道的中间层之间的空白。该链可以通过以下两种方式之一包含在您的配置中:

  • SSLCertificateFile服务器证书后的新行中按顺序嵌入与为设置的文件相同的文件中(根目录应在底部)。如果您像这样进行设置,则需要SSLCertificateChainFile指向与完全相同的文件SSLCertificateFile
  • SSLCertificateChainFile指令中配置的单独文件中;颁发服务器证书的CA证书应首先在文件中,然后是根目录中的其他证书。

检查您现在拥有的证书文件-我敢打赌,它不包含链数据。通常可以正常运行,但最终会导致某些浏览器或其他浏览器出现问题。


2
我认为,如果不包括中间件,那么“通常可以正常工作”实际上不再适用于GoDaddy证书。实际上,我什至不确定它是否再适用于Verisign和Thawte之类的人,因为他们已经采取行动,使站点证书与浏览器中包含的基本证书距离更远。我想这会使撤销更容易,因为杀死中间体更容易。
cjc 2012年

“嵌入在SSLCertificateFile中”:我希望这能奏效,但似乎没有,并且文档中也没有提及。您的锁链必须插入SSLCertificateChainFile
史蒂夫·凯莱特

@SteveKehlet是的,它没有记录,是正确的,但是我过去已经成功完成了它-您如何格式化多合一文件?
Shane Madden

1
@SteveKehlet实际上,你是对的,我记得错了。我为单个文件设置的方式是同时拥有两个文件,SSLCertificateFileSSLCertificateChainFile指向同一个组合文件,该文件有效-编辑了我的答案以更正此问题。
Shane Madden

@ShaneMadden美丽!有用!非常感谢您解决此问题。
史蒂夫·凯莱特


4

实际上,GoDaddy确实为您提供了一个中间链:

http://support.godaddy.com/help/5238

这里还有更多讨论。

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

GoDaddy发出的电子邮件告诉您如何下载新证书,该电子邮件还将在中间证书文件中包含信息。它在底部某个位置,也许是在您的眼睛因摩擦和追加销售而凝视之后。

关于如果不包括正确的SSLCertificateChainFile指令将发生的情况:您将在浏览器中看到一个红色的大警告,因为您的SSL站点无法在浏览器中进行验证,因为它们无法遵循您网站的证书链证书由浏览器知道的证书颁发机构拥有。


2

我想在以前关于SSLCertificateChainFile的好答案中添加一点,即该文件中证书的顺序也很重要。基于OpenSSL的客户端将自行整理订单,但是基于gnutls的客户端将在顺序错误的链上失败。

使用gnutls-cli测试订购,例如

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

/etc/ssl/certs/ca-certificates.crt是您的发行版将组合证书放置的位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.