我制作了2个CSR(一个用于服务器,一个用于客户端,如下图所示: ssatClient 和 ssatServer )。用有效的CA证书签名后,我对其进行了验证。他们两个都显示验证可以。
我正在使用xampp通过SSL连接运行APACHE服务器。
配置
这是 httpd-ssl.conf
的内容Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:D:/xamppNew/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
DocumentRoot "D:/xamppNew/htdocs"
ServerName SSAT:443
ServerAdmin admin@example.com
ErrorLog "D:/xamppNew/apache/logs/error.log"
TransferLog "D:/xamppNew/apache/logs/access.log"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/ssatServer.crt"
SSLCertificateKeyFile "conf/ssl.key/ssatServer.key"
SSLCertificateChainFile "conf/SSAT_ca-chain.crt"
#SSLCACertificatePath conf/ssl.key/SSAT.crt"
#SLCACertificateFile "conf/ssl.crt/SSAT.crt"
#SSLVerifyClient require
#SSLCACertificateFile conf/ssl.crt/SSAT.crt
#SSLVerifyDepth 1
SSLVerifyClient require
SSLCACertificateFile "conf/SSAT_ca-chain.crt"
<Location /protected>
SSLVerifyClient require
SSLVerifyDepth 3
</Location>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "D:/xamppNew/apache/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
下面显示在文件 httpd-vhosts.conf
中的虚拟主机设置<VirtualHost *:443>
ServerName SSAT
SSLEngine on
SSLCertificateFile "conf\ssl.crt\ssatServer.crt"
SSLCertificateKeyFile "conf\ssl.key\ssatServer.key"
SSLCACertificateFile "conf\SSAT_ca-chain.crt"
<Location /protected>
SSLVerifyClient require
SSLVerifyDepth 3
</Location>
</VirtualHost>
问题
我正在尝试通过ssat:443站点对客户端进行身份验证。在虚拟主机中使用 SSLVerifyClient require 选项设置标签后,用户才能访问此目录,前提是用户拥有由我的CA。无论我在Google Chrome浏览器中删除受信任的证书还是个人证书,即使没有有效的客户端证书,我仍然可以访问/ protected目录。有时,如果我尝试在30或40分钟后重新连接,则会弹出窗口,让我选择客户端证书。选择它之后,服务器使我进入/ protected选项卡,从此直到下一次弹出窗口,无论我重启服务器多少次或删除/重新添加有效和无效的证书,它都使我可以访问它。 / p>
问题
我在配置中做错了吗? “连接是安全的”始终适用于服务器证书。 有什么方法可以删除“缓存的”证书,因此每次我要访问/ protected选项卡时,都会通过弹出窗口要求我提供证书吗?
对不起,很长的帖子