SSLCertificateFile 和 SSLCertificateChainFile 之间的区别?

chr*_*lee 48 ssl apache-2.2

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

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Sha*_*den 61

严格来说,您永远不需要 SSL 链来运行。

什么,你总是需要的SSLCertificateFile一个SSLCertificateKeyFile包含该证书正确的密钥。

问题是,如果您提供给 Apache 的只是证书,那么它必须提供给连接客户端的只是证书 - 这并不能说明有关该 SSL 证书的全部内容。它是说,“我被某人签了名,但我不会告诉你他们的事”。

这通常工作正常,因为大多数客户端系统都有大量 CA 证书(根证书和中间证书),它可以检查匹配的签名关系以建立信任。但是,有时这不起作用;大多数情况下,您遇到的问题是客户端不持有为您的证书签名的中间 CA 的证书。

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

  • 嵌入在您为SSLCertificateFile,设置的同一个文件中,在服务器证书之后的新行中(根应该在底部)。如果您像这样设置它,您将需要SSLCertificateChainFile指向与SSLCertificateFile.
  • SSLCertificateChainFile指令中配置的单独文件中;颁发服务器证书的 CA 证书应该是文件中的第一个证书,然后是根目录中的任何其他证书。

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

  • 我认为“通常工作正常”不再适用于 GoDaddy 证书,如果不包括中间件。我什至不确定它是否不再适用于 Verisign 和 Thawte 这样的人,实际上,因为他们已经采取行动,使站点证书与浏览器中包含的基本证书更远。我想它使撤销更容易,因为杀死中间体更简单。 (2认同)

Wer*_*reW 5

这是对选择一个与另一个之间的差异以及可观察到的影响的一个很好的解释:

/sf/ask/132998841/