微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TLS 1.3 和 SSLVerifyClient 不起作用,但它适用于 TLS 1.2

如何解决TLS 1.3 和 SSLVerifyClient 不起作用,但它适用于 TLS 1.2

我在尝试启用 SSLVerifyClient 时遇到问题,因此用户可以使用安装在浏览器上的证书进行访问。

我已经创建了 CA、证书、密钥和所有东西。在我的 Apache conf 中,我有这个:

<VirtualHost *:443>
    DocumentRoot "C:\xampp\htdocs\web.es"
    ServerName web.es
    ServerAlias web.es
    SSLEngine on 
    SSLCertificateFile "conf/ssl.crt/cert.crt" 
    SSLCertificateKeyFile "conf/ssl.key/private.key"
    SSLCACertificateFile "conf/ssl.crt/ca.crt"
    #SSLProtocol -all +TLSv1.2
    <LocationMatch ^/cert_test$>
        SSLVerifyClient require
        SSLVerifyDepth 10
        SSLOptions +StdEnvVars
    </LocationMatch>
</VirtualHost>

我有“LocationMatch”,因为我只想要证书的东西就在那里。

在这里记录:

[Wed Jan 13 12:25:18.705565 2021] [ssl:error] [pid 10148:tid 1832] [client 127.0.0.1:50913] AH10158:无法执行握手后认证

[2021 年 1 月 13 日星期三 12:25:18.705565] [ssl:error] [pid 10148:tid 1832] SSL 库错误错误:14268117:SSL 例程:SSL_verify_client_post_handshake:未收到扩展

问题是,我已经搜索了好几天,今天我才发现问题是 TLS 1.3。如果我取消注释行 SSLProtocol -all +TLSv1.2(必须在 LocationMatch 之外,否则 Apache 甚至无法启动,我已经测试过了),Apache 将使用 TLS 1.2,然后一切工作正常。浏览器要求提供证书,然后选择有效的证书,我就可以进入该页面。如果我使用 TLS 1.3(认选项),我总是获得禁止。您无权访问此资源。原因:无法执行握手后身份验证”。

我已经搜索了几个小时,但找不到解决方案。我唯一发现的是,在 Firefox 中,about:config 启用了security.tls.enable_post_handshake_auth。对于基于 Chromium 的浏览器,结果是相同的,但我找不到像 Firefox 那样的“deeper-conf”解决方案。无论如何,这都不是解决方案。

版本在这里:Apache/2.4.46 (Win64) - OpenSSL/1.1.1g - PHP/7.4.10 - 端口 443

是我的配置有问题还是 TLS 有问题?

谢谢。

编辑: 正如@Steffen Ullrich 在下面的评论中所说,浏览器尚不支持功能(在 Firefox 中支持,但只是在 about:config 中启用了一个选项,这对用户不友好且不支持一种选择,至少不适合我)。如果有人和我有同样的问题,那么在 14/01/2021 天就没有办法了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。