Apache SSLCatertificateFile和SSLCertificateChainFile之间的差异

Apache SSLCatertificateFile和SSLCertificateChainFile之间的差异,apache,ssl,ssl-certificate,digital-certificate,Apache,Ssl,Ssl Certificate,Digital Certificate,我在我的web服务器上提供SSL页面,我有一个问题。 SSLCertificateFile和SSLCertificateChainFile之间有什么区别 当我使用SSLCertificateChainFile时,我收到了来自日本手机浏览器的警告,但当我使用PC浏览器(如IE、FF)时,没有问题。 另一方面,SSLCACertificateFile对两种浏览器都没有造成任何问题 浏览器连接到apache时有什么区别吗?SSLCertificateChainFile是一个正确的选择,但是这个指令变了

我在我的web服务器上提供SSL页面,我有一个问题。 SSLCertificateFile和SSLCertificateChainFile之间有什么区别

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


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

SSLCertificateChainFile是一个正确的选择,但是这个指令变了。此指令导致将列出的文件与证书一起发送到任何连接的客户端

(以下简称“CACert”)取代SSLCertificateChainFile(以下简称“Chain”),并允许使用相关证书签署客户证书。这种身份验证非常罕见(至少目前如此),如果您不使用它,就没有理由通过使用CACert而不是Chain来增强其功能。另一方面,有人可能会争辩说,附加功能没有坏处,CACert涵盖了所有情况。这两个论点都是有效的


不用说,如果你问证书供应商,他们总是会在链上推动CACert,因为它给了他们另一种东西(客户证书),他们可以潜在地向你出售

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

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

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

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

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

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

SSLVerifyClient要求
SSLVerifyDepth 5
S开发+严格要求
SSLUserName SSL\u客户端\u S\u DN\u CN
SSLRequireSSL

只是简短的解释<代码> SSLUSENREST SSLYCIENTRONS.DNJCN.<代码>将认证的用户名设置为证书的通用名,而不是整个X509'/OU= Foo/Cn=……'Subj.

这太简单了,根SIG不在手机的根存储中,这是很常见的另一个需要考虑的事实是算法。“但要小心:仅当您使用单个(RSA或DSA)基于服务器的证书时,提供证书链才有效。如果您使用耦合的RSA+DSA证书对,则仅当两个证书实际使用相同的证书链时,这才有效。否则浏览器将在这种情况下混淆。”-----@Eddie Correct,尽管我认为重要的一点是,这对两种选择都有同等的影响。此外,可能值得指出的是,DSA证书(幸运的是)非常罕见。