Chrome无法提示客户端证书

时间:2017-06-30 19:22:58

标签: .htaccess google-chrome authentication ssl client

我一直在尝试设置客户端证书身份验证近三天,但无济于事。

我已经在heliohost注册了一个免费域名并安装了由加密发布的免费ssl证书。

我的计划是拥有自签名证书并在以后针对数据库进行检查(用于用户身份验证),因此我将SSLVerifyClient设置为htaccess文件中的optional_no_ca。我安装了几个由openssl生成的自签名证书,但无论我尝试使用哪种浏览器(Chrome,Firefox或IE),当我尝试通过Chrome访问手机时,我没有提示选择之外的证书,在这种情况下,它提供安装证书,因为我没有通过电话。

这是我的.htaccess文件的内容:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

SSLOptions +StdEnvVars
SSLRequireSSL
SSLVerifyDepth 1
SSLVerifyClient optional_no_ca

我真的很感激有关这个问题的任何反馈,这是我第一次尝试实现这一点,而且我不确定天气问题是我的设置还是镀铬。

我也使用chrome 59

KRISS

2 个答案:

答案 0 :(得分:0)

您已省略了ssl证书颁发机构配置的部分内容。需要配置签署客户端证书的CA证书(请参阅this

 SSLCACertificateFile "conf/ssl.crt/ca.crt"

服务器没有发送根CA,因为您已将SSLVerifyClient设置为optional_no_ca,浏览器会自动执行连接,因为它找不到任何合适的证书(参见下面的TLS1.2注释)

由于您已在服务器中设置optional_no_ca,即使未显示证书,它也会接受连接。您设置require后,您会发现Chrome与该连接失败。

SSLCACertificateFile在.htaccess中无法配置。由于您无法自定义chrome,我担心您需要配置此参数以强制提供证书提示

当证书列表为空时,浏览器之间的行为可能会有所不同,因为TLS规范允许它

请参阅TLS1.2 RFC

  

<强> 7.4.4。证书申请

     

certificate_authorities

     

可接受的专有名称[X501]的列表         certificate_authorities,以DER编码格式表示。这些         专有名称可以为a指定所需的专有名称         根CA或从属CA;因此,此消息可用于         描述已知的根以及所需的授权空间。 如果         certificate_authorities列表为空,然后客户端为MAY         发送相应ClientCertificateType 的任何证书,         除非有相反的外部安排。

     

<强> 7.4.6。客户证书

     

[...]   如果客户端没有发送任何证书,那么         服务器可以自行决定是否继续握手         客户端身份验证,或使用致命的handshake_failure进行响应         警报。

答案 1 :(得分:0)

问题是由于chrome,我遗憾的是无法确定它但是设法让它工作并提示我在firefox上获得证书。 谢谢你的答案。