SSLCACertificateFile和SSLCertificateChainFile之间的区别


76

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

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

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


多数民众赞成太容易了,根信号不在通用的手机根存储中

Answers:


74

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

SSLCACertificateFile(以下称为“ CACert”)代替SSLCertificateChainFile(以下称为“ Chain”),并且还允许使用相关证书对客户端进行签名证书。这种身份验证非常罕见(至少目前是这样),如果您不使用它,恕我直言,没有理由通过使用CACert而不是Chain来增强其功能。另一方面,有人可能会说附加功能没有危害,并且CACert涵盖了所有情况。这两个参数均有效。

不用说,如果您要求证书供应商,他们将始终推动CACert over Chain,因为这会给他们另一件事(客户证书),他们有可能将您直接出售给您。;)


实际上要考虑的另一件事是算法。“但是要小心:只有在使用单个(基于RSA或DSA)服务器证书的情况下,提供证书链才有效。如果您使用的是RSA + DSA耦合的证书对,则只有在两个证书实际上使用相同的证书时,此方法才有效证书链。在这种情况下,其他浏览器会感到困惑。” ---- httpd.apache.org/docs/2.0/mod/...
埃迪-

@Eddie正确,尽管我相信提到这一点对两个选项均会产生影响非常重要。另外,可能值得指出的是,DSA证书(非常)很少消失。
BMDan 2013年

20

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

使用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 = ...'主题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.