客户端证书身份验证不适用于Chrome和apache2服务器

时间:2019-05-26 04:15:45

标签: google-chrome openssl apache2

我正在尝试使用客户端证书来限制对apache2 Web服务器的安全访问。但是,安装后,谷歌浏览器会返回ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED错误。

首先,我通过创建CA密钥和X509 PEM文件来设置Web服务器的CA:

openssl genrsa -out CA.key 2048
openssl req -x509 -new -nodes -key CA.key -days 7300 -out CA.pem

我已经在apache2中设置了该网站的现有证书,用于受信任的第三方分配的https通信。以下是此网站的apache2 conf设置,其中包括上面生成的证书的SSLCACertificateFile,SSLOptions,SSLVerifyClient和SSLVerfiyDepth指令:

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerName site.aname.com
                ServerAdmin webmaster@localhost
                DocumentRoot /var/www/html/site
                <Directory /var/www/html/site>
                        Options FollowSymLinks
                        AllowOverride All
                        Require all granted
                        SSLOptions +StdEnvVars
                        SSLVerifyClient require
                        SSLVerifyDepth 1
                </Directory>
                LogLevel debug
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLCACertificateFile /etc/apache2/ssl/site/CA.pem
                SSLCertificateFile /etc/apache2/ssl/site/fullchain.pem
                SSLCertificateKeyFile /etc/apache2/ssl/site/privkey.pem
                Include /etc/apache2/ssl/site/options-ssl-apache.conf
        </VirtualHost>
</IfModule>

这将在没有客户端证书的情况下完成Web服务器的配置和测试,并获得预期的错误。

然后我生成客户端证书并与CA签署,然后使用以下私钥将其打包在pkcs12中:

生成:

openssl genrsa -out user.key 2028
openssl req -new -key user.key -out user.csr

签收:

openssl x509 -sha256 -req -in user.csr -out user.crt -CA CA.pem -CAkey CA.key -CAcreateserial -days 1095

创建PKCS12:

openssl pkcs12 -export -out user.pfx -inkey user.key -in user.crt

然后将生成的user.pfx安装在运行chrome的用户计算机上。

尝试连接时,Chrome要求输入选择的密钥,结果是错误ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED。

在Windows 10下运行的Chrome版本为:74.0.3729.169版(官方内部版本)(64位)

更新: 我可以使用以下命令从另一台Linux服务器成功连接curl:

curl --cert user.crt --key user.key --pass password https://site.aname.com/

但是,与Windows 10命令行相同的结果是: curl:(35)schannel:下一个InitializeSecurityContext失败:未知错误(0x80090027)-参数不正确

1 个答案:

答案 0 :(得分:0)

已解决,方法是确保已签名的用户证书是“版本3” X.509证书,并在v3扩展中同时指定“密钥用法”和“增强的密钥用法”属性。通过修改X509登录请求或如果您使用openssl CA命令,可以实现openssl.conf文件。