SSL 例程:ssl3_read_bytes:tlsv1 在相互认证时发出解密错误警报

SSL 例程:ssl3_read_bytes:tlsv1 在相互认证时发出解密错误警报

我已经配置了 JBOSS 5SSLVerifyClient="require"

  1. 客户端包含服务器 CA 证书和自己的证书(JDK 1.8)。
  2. 服务器包含客户端 CA 证书和其自己的证书(JDK 1.6)。

对于这种情况,当我们尝试与该服务器通信并获取tlsv1 alert decrypt error

我不知道这是什么例外?

在卷曲过程中,

Unknown SSL protocol error in connection

在 OpenSSL 期间:

SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A 
SSL_connect:error in SSLv3 flush data 
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA

答案1

该问题可能是(根据 OpenSSL 输出估计)所使用的算法模式不受对方支持,或者被认为已被弃用/违反(即 TLSv1 是已弃用超过一年)。

我建议使用 tcpdump/wireshark 捕获握手。由于握手似乎失败了,您应该能够查看未加密的握手阶段。否则,由于您可以访问证书的私钥,因此您也应该能够在 wireshark 中解密捕获的通信。

如果问题不是支持的算法不匹配,我的第二个猜测是与 DNS 有关。在某些情况下,客户端使用证书证明其身份是不够的,但必须有匹配项,例如其 DNS 记录 (PTR) 和证书中的 CommonName 字段。

相关内容