TLS握手衰竭TLS解密错误

问题描述:

我试图调试TLS相关的问题。 TLS是两个应用客户端之间建立一个&服务器B.将A & B的证书交换,我已经验证证书具有正确的扩展,也有它的根CA验证成功上传叶证书的根CA,并可供应用程序信任库使用。 TLS期间Wireshark的,我看到下面的消息流:TLS握手衰竭TLS解密错误

CLIENT : Client Hello 
SERVER : Server Hello , Certificate , Certificate request , Server Hello Done 
CLIENT : Certificate , Client key exchange 
CLIENT : Certificate Verify , Change Cipher spec , Encrypted Handshake Message 
SERVER : Alert : Level Fatal, Description : Decrypt Error) 

而且TLS日志显示:

TLS protocol error(ssl reason 
code=block type is not 01 [106]),lib=rsa routines 
[4],fun=RSA_padding_check_PKCS1_type_1 [112], errno=12 for 
192956|<CLID::StandAloneCluster><NID::xxx.xxx.xxx.xxx><CT::0,0,0,0.0><IP::> 
192956|<DE 
V::><LVL::Error><MASK::0800> 

任何指针,这可能是由服务器端导致解密错误? TLS交换期间的证书没有问题,可以正确链接到其根证书。

任何指针将有很大的帮助!

在此先感谢!

+1

那么它不是证书。你在客户端运行什么软件? – EJP 2012-08-14 06:31:55

+0

客户端正在运行Java应用程序 – user839917 2012-08-14 15:07:25

+0

正在使用什么SSL /加密堆栈? – FractalSpace 2016-12-19 20:43:04

什么明显的情况是,服务器无法通过应由指定的密码组进行加密和验证客户端(更改密码规范后的“成品”)解密给他的第一个加密消息客户的“更改密码规范” - 消息。

这意味着,例如,服务器并没有真正拥有从中提供给客户端与证书或类似这样的东西公钥的私钥。

openssl s_client -host ip_address -port port_num 

请更换IP_ADDRESS到您的客户端IP或服务器的ip,并port_num他们的SSL端口,并打印出结果,这样我们就可以找到答案。

+0

这不是一个答案,这是一条评论。在未来的地方请求信息作为评论 – 2016-10-06 09:22:19

试试下面的命令:

openssl s_client -connect mail.example.com:25 -starttls smtp 
+3

请详细说明为什么你选择这个命令,如果OP需要替换任何值。 – onebree 2015-08-17 20:34:10