Google chrome 客户端证书身份验证不适用于chrome和apache2服务器
我试图使用客户端证书来限制对apache2 web服务器的安全访问。然而,安装后,谷歌浏览器返回一个ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED错误 首先,我通过创建CA密钥和X509 PEM文件为Web服务器设置CA: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中设置的网站的现有证书,用于可
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/