SSL 警报编号 48:未知 CA,即使使用 openssl 验证也返回正常



大家好:)我在haproxy上遇到SSL双重身份验证的问题,我的根和中间CA一次合并,我的客户端证书正常,openssl 验证返回OK(根据CA验证客户端证书(

openssl verify -CAfile ca_cert.pem clientcert.crt
OK

我在 Haproxy 上的配置:

前端 myfront_77 绑定 MYIP:Myport SSL CRT/etc/haproxy/ssl/servercert.pem ca-file/etc/haproxy/ssl/ca_cert.pem 强制 TLSV12 密码 AES256+EECDH:AES256+EDH:AES256-GCM-SHA384:AES128-GCM-SHA256:AES128-SHA256:AES256-SHA 验证必填项

但是在发送请求时,我有这个 ssl 错误:

SSL_connect:SSLv3 读取中的错误已完成 SSL3 警报 读取:致命:未知 CA SSL_connect:在 SSLv3 中失败 读取完成 A 140080046843792:错误:14094418:SSL 例程:ssl3_read_bytes:tlsv1 警报未知 ca:s3_pkt.c:1493:SSL 警报编号 48

谁能帮忙,我从几天来就为这个问题打破了头?

谢谢

首先我要说的是,我从未使用过haproxy,但是这个问题大约在4年前被问到,现在有4K视图,没有答案,所以这是我使用Dovecot和Thunderbird时遇到完全相同错误的经历。

随着Thunderbird和Firefox的发展,不要使用系统信任存储。我认为这在更多平台上是常见的。

openssl verifyopenssl s_client验证证书后,应该在客户端程序中检查根CA证书。 在 Mozilla 程序中,这可以在 about:preferences#privacy> View Certificate...

就我而言,我有一个过时的证书,因此请务必查看详细信息,或者更好的是,验证客户端程序中的根 CA 是否与 openssl 正在验证的根 CA 匹配。在这种情况下,一个简单的差异将起作用。

有时,根据私钥验证证书可能会有所帮助,这可以通过比较公钥来完成。openssl pkey -in key.pem -pubout | diff - <(openssl x509 -in cert.pem -pubkey -noout)

Mozilla 侧边栏,我不建议这样做,因为它会复制一堆证书。也可以让 Thunderbird/Firefox 查看系统信任存储,方法是转到 about:preferences#privacy> Security Devices...>加载,然后导航到您的 p11-kit-trust.so。例如/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.sohttps://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

Dovecot 项目有一个很好的测试文章,用于检查是否存在服务器或客户端问题.
https://wiki2.dovecot.org/TestInstallation &
https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/#testing

但是,自从引入 keyUsage 约束以来,这并不是全部情况。客户端可能会强制执行此操作,从而导致类似的错误:"sslv3 警报错误证书:SSL 警报编号 42">
https://bugzilla.mozilla.org/show_bug.cgi?id=1036338

我发现以下内容是一个很好的文章,包括创建根/中间/客户端证书链文件和约束。 https://jamielinux.com/docs/openssl-certificate-authority/create-the-root-pair.html

最新更新