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

Google chrome 客户端证书身份验证不适用于chrome和apache2服务器,google-chrome,openssl,apache2,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中设置的网站的现有证书,用于可

我试图使用客户端证书来限制对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>
签字人:

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
然后在运行chrome的用户机器上安装生成的user.pfx

当尝试连接时,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:next InitializeSecurityContext失败:未知错误(0x80090027)-参数不正确

通过确保签名的用户证书是“version 3”X.509证书并在v3扩展中指定密钥使用和增强密钥使用属性来解决。这是通过修改X509签名请求的openssl.conf文件或使用opensslca命令实现的

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