我将 apache 更新到最新版本 2.4.37 并将 openssl 更新到 1.1.1,现在,当客户端进行身份验证时,我只在 Firefox 63 中收到此错误,但在 Chrome 中没有:
[ssl:error] AH: verify client post handshake, referer: https://******/login
[ssl:error] AH10158: cannot perform post-handshake authentication, referer: https://******/login
[ssl:error]SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received
我使用wireshark 试图找出问题所在,我知道Firefox 使用TLS 1.3,而Chrome 使用TLS 1.2。事实上,如果我将 FF 中的 TLS 最大版本设置为 TLS 1.2,它就可以正常工作。
我想获得 TLS 1.3 兼容性,或者,如果还不可能,强制在我的 Apache 配置中,客户端始终使用 TLS 1.2,但我不明白:(
这是我的 apache vhost 配置文件:
[...]
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCertificateChainFile /etc/apache2/ssl/intermediate.crt
SSLCACertificateFile /etc/apache2/ssl/ca.pem
SSLVerifyDepth 3
SSLProtocol TLSv1.2
SSLHonorCipherOrder on
<Directory /var/www/html/>
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride All
Order deny,allow
Allow from 10.55.12.0/24
Deny from all
</Directory>
<Files "login-ssl.php">
SSLVerifyClient optional
SSLOptions +StdEnvVars +StrictRequire
</Files>
[...]
有人能帮助我吗?
谢谢。
已编辑
我找到了解决方案。SSLProtocol 指令应该在 /etc/apache2/mods-enabled/ssl.conf 中。