我在我的网络服务器上提供SSL页面,我有一个问题。 SSLCACertificateFile和SSLCertificateChainFile有什么区别?
当我使用SSLCertificateChainFile时,我收到了日本手机浏览器的警告,但是当我使用PC浏览器(如IE,FF)时,没有问题。 另一方面,SSLCACertificateFile对两个浏览器都没有造成任何问题。
浏览器连接到apache时有什么不同吗?
答案 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 = ...'主题。