SSLCACertificateFile和SSLCertificateChainFile之间的区别

nam*_*nam 71 apache ssl digital-certificate ssl-certificate

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

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

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

BMD*_*Dan 71

SSLCertificateChainFile是一个正确的选择,但是从Apache 2.4.8开始,这个指令已经过时了.该指令导致列出的文件与证书一起发送到任何连接的客户端.

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

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


Ale*_*yak 19

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

使用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>
Run Code Online (Sandbox Code Playgroud)

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