【发布时间】:2016-09-16 07:13:24
【问题描述】:
我正在尝试实施基于证书的身份验证,但在 SSL/TLS 握手期间出现错误。我尝试使用openssl s_client -state -debug -connect example.si:443 对其进行调试,但老实说我不够精通,无法解释输出:
据我所知,证书链已经过正确验证(我也检查过here),并且在设置Apache 2.2 服务器上的 VirtualHost:
<VirtualHost *:443>
DocumentRoot D:/www/authentication
ServerName lpt.uni-mb.si
ServerAlias lpt.uni-mb.si
SSLEngine on
SSLCertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\22_lpt.uni-mb.si.crt"
SSLCACertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\root.crt"
SSLCertificateKeyFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\server.key"
SSLCertificateChainFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\11_Intermediate.crt"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4
SSLVerifyClient require
SSLVerifyDepth 10
SSLOptions +StdEnvVars +ExportCertData
<Directory "D:/www/authentication">
Options Indexes Includes
AllowOverride All
Order Deny,Allow
Allow from all
Options +FollowSymlinks
</Directory>
</VirtualHost>
考虑到非常短的写入操作,可能是客户端密钥交换存在问题吗?
【问题讨论】:
-
虽然它不能解决您的问题,但您不应允许使用过时的 SSLv2/v3 风格,而应仅配置 TLS:
SSLProtocol all -SSLv2 -SSLv3。 -
在使用
s_client使用证书测试相互认证时,您需要指定证书和密钥。另请参阅s_clientman page。
标签: apache ssl client-certificates handshake