SSLCACertificateFile和SSLCertificateChainFile之间的区别

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

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

浏览器连接到Apache时有什么区别吗?

SSLCertificateChainFile通常是正确的选项,因为它影响最小; 它会导致列出的文件与证书一起发送到任何连接的客户端。

SSLCACertificateFile(以下简称“CACert”)执行SSLCertificateChainFile所做的一切(以下简称“Chain”),并允许使用有问题的证书签署客户证书。 这种authentication是非常罕见的(至less现在是这样),如果你不使用它,恕我直言,没有理由通过使用CACert而不是链来增强其function。 另一方面,有人可能会认为附加function没有任何损害,CACert涵盖所有情况。 两个参数都是有效的。

不用说,如果你询问证书供应商,他们会一直推销CACert over Chain,因为它给了他们另外一个(客户证书),他们可能会把你卖掉。 ;)

其实,两者都可能是有效的select。

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

使用SSLCACertificateFile提供您的“私人”CA,可以颁发客户端证书,您可以分发给某些选定的用户。 这些client证书实际上非常适合身份validation(与基本密码validation相比),并且通常不需要由公共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将把authentication的用户名设置为证书的CommonName,而不是整个x509'/ OU = Foo / CN = …'主题。