SSLCACertificateFile和SSLCertificateChainFile之间的区别

时间:2009-12-14 09:55:46

标签: apache ssl ssl-certificate digital-certificate

我在我的网络服务器上提供SSL页面,我有一个问题。 SSLCACertificateFile和SSLCertificateChainFile有什么区别?

当我使用SSLCertificateChainFile时,我收到了日本手机浏览器的警告,但是当我使用PC浏览器(如IE,FF)时,没有问题。 另一方面,SSLCACertificateFile对两个浏览器都没有造成任何问题。

浏览器连接到apache时有什么不同吗?

2 个答案:

答案 0 :(得分:69)

SSLCertificateChainFile是一个正确的选择,但该指令变为obsolete as of Apache 2.4.8。该指令导致列出的文件与证书一起发送到任何连接的客户端。

SSLCACertificateFile(以下简称“CACert”)取代SSLCertificateChainFile(以下简称“Chain”),并允许使用相关证书签署客户端证书。这种认证很少见(至少暂时如此),如果你不使用它,恕我直言,没有理由通过使用CACert而不是Chain来增强其功能。另一方面,有人可能认为附加功能没有任何损害,而CACert涵盖了所有情况。这两个论点都是有效的。

毋庸置疑,如果您询问证书供应商,他们将始终推动CACert over Chain,因为它给了他们另一件事(客户证书),他们可能会将您卖给您。 ;)

答案 1 :(得分:18)

实际上,两者都可能是有效的选择。

使用SSLCertificateChainFile发布由公共证书颁发机构签署的证书(VeriSign,RapidSSL等)

使用SSLCACertificateFile提供可以发布客户端证书的“私有”CA,您可以将其分发给某些选定的用户。这些client证书实际上非常适合身份验证(与基本密码身份验证相比),并且通常不需要由公共CA分发(因此您可以节省一些钱)。

因此,如果您想为网站的某些部分添加安全授权,请执行以下操作:

<Directory /var/www/html/authorized>
  SSLVerifyClient require
  SSLVerifyDepth  5

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

简单说明SSLUserName SSL_CLIENT_S_DN_CN会将经过身份验证的用户名设置为证书的CommonName,而不是整个x509'/ OU = Foo / CN = ...'主题。