当服务器apache请求客户端证书时,Firefox拒绝显示证书列表?

当服务器apache请求客户端证书时,Firefox拒绝显示证书列表?,apache,firefox,ssl,certificate,Apache,Firefox,Ssl,Certificate,我试图迫使Apache在允许用户访问我公司局域网网站上的网站内容之前,通过他们的个人证书对用户进行身份验证 到目前为止,我已经尝试过如下配置httpd-ssl.conf: SSLVerifyDepth 0 SSLVerifyClient require SSLProxyEngine off SSLCACertificateFile C:/(...)/apache2/server_certs/ca.pem SSLVerifyDepth 0 SSLVerifyClient require

我试图迫使Apache在允许用户访问我公司局域网网站上的网站内容之前,通过他们的个人证书对用户进行身份验证

到目前为止,我已经尝试过如下配置httpd-ssl.conf:

SSLVerifyDepth 0
SSLVerifyClient require
SSLProxyEngine off
SSLCACertificateFile    C:/(...)/apache2/server_certs/ca.pem

SSLVerifyDepth 0
SSLVerifyClient require
SSLProxyEngine off
当我转到
https://localhost
通过firefox,它将向我显示一个对话框,其中包含我要选择的导入证书列表

这正是我所期望的。但我想知道“那么,我怎样才能根据客户的证书进行测试/验证?”。此时,服务器拒绝了我在“证书”对话框中尝试的所有证书(我自己创建的所有自签名证书)

通过谷歌搜索,我找到了一个名为“SSLCACertificateFile”的指令。这是指向证书文件的路径,该文件应该是所有客户端证书的根CA。换句话说,由该CA颁发的来自客户端的任何证书都将被视为有效。(可以找到更多关于它的信息)

但是,问题是,当我以这种方式指定一个具体的CA证书文件时,Firefox停止向我显示证书对话框。文件“httpd ssl.conf”如下所示:

SSLVerifyDepth 0
SSLVerifyClient require
SSLProxyEngine off
SSLCACertificateFile    C:/(...)/apache2/server_certs/ca.pem

SSLVerifyDepth 0
SSLVerifyClient require
SSLProxyEngine off
相反,Firefox向我显示了一个错误通知,错误代码为:“ssl\u错误\u握手\u失败\u警报”

我确信CA证书文件“CA.pen”的格式正确,因为它是我下载的安装包中的原始文件。(实际上,它在一个名为uniServer的免费产品中)

我已经用IE,Chrome测试过了,结果都是一样的。我试过测试一些其他的“ca.pem”文件(都是自签名的),结果没有改变

所以,我的问题很简单:为apache指令“SSLCACertificateFile”指定一个具体的CA文件有什么不对

如果您能告诉我答案,那么您是否介意告诉我更多验证cleint证书的方法,例如CN、颁发日期、验证到。。。等

感谢并高度赞赏任何建议

“意味着只接受自签名客户端证书”,这似乎不是您想要做的(因为您已经设置了CA)

您当然希望将其增加到至少
1
(如果客户端可能提供证书链,则增加到更多)

openssl s_客户端-连接您的.server.name:443
应提供服务器公布的CA名称列表。Firefox将只为您提供可链接到这些发行者的证书选择


对于授权条件,您可能会感兴趣(或其继任者,取决于您使用的Apache Httpd版本)。

谢谢,但我想知道为什么当我指定“SSLVerifyDepth 0”且“SSLCACertificateFile”没有CA时,我仍然无法使用自签名证书访问网页?是的,为什么Firefox没有显示证书对话框的问题的答案是,我在Firefox商店的服务器上没有CA颁发的任何证书。非常感谢你。你救了我一天!关于SSLVerifyDepth的观点是非常正确的!我的代码工作起来很有魅力!我希望我能给你10票!我认为
SSLVerifyDepth 0
仅在
SSLVerifyClient可选\u no\u ca
和中描述的空
SSLCADNRequestFile
技巧中真正有用。您需要在应用程序中验证证书,否则将无法提供任何实际的身份验证。除非你真的知道自己在做什么,否则不推荐。