繁体   English   中英

如何以两种方式通过SSL握手判断服务器或客户端身份验证是否失败

[英]How to tell if server or client auth failed in two way SSL handshake

以下是客户端身份验证失败的SSL握手的调试输出的摘录。 我几乎可以肯定我的密钥库中有所有相关证书。 我还尝试过信任所有服务器(例如-Dcom.sun.net.ssl.checkRevocation=false并根据Medhi对此的回答是否有Java设置来禁用证书验证? 我总是得到相同的unknown_ca异常。

是否有可能此异常来自服务器而不喜欢我作为客户端提供的凭据? 怎么能知道这个错误来自哪一侧?

0000: A6 B5 D1 75 74 B2 73 97   E1 B2 BA 5B 56 75 6E 09  ...ut.s....[Vun.
Server write key:
0000: E3 DF 3B CC 9A 6C DF A4   47 A0 69 51 D9 80 0F F2  ..;..l..G.iQ....
... no IV derived for this protocol
*** CertificateVerify
Signature Algorithm SHA512withRSA
MyMain, WRITE: TLSv1.2 Handshake, length = 264
MyMain, WRITE: TLSv1.2 Change Cipher Spec, length = 1
*** Finished
verify_data:  { 69, 68, 30, 177, 182, 137, 211, 81, 29, 49, 195, 244 }
***
MyMain, WRITE: TLSv1.2 Handshake, length = 80
MyMain, READ: TLSv1.2 Alert, length = 2
MyMain, RECV TLSv1.2 ALERT:  fatal, unknown_ca
%% Invalidated:  [Session-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
MyMain, called closeSocket()
 MyMain, RECV TLSv1.2 ALERT: fatal, unknown_ca 

客户端从服务器接收到TLS警报,因为服务器不知道(未知),因此不信任客户端发送的证书的颁发者(ca)。

这意味着您的客户端没有发送服务器期望的证书,或者客户端未能包括必要的中间证书,因此证书验证失败,或者服务器端的配置可能不正确。

...我也试图信任所有服务器...

这对这里没有帮助。 问题不是客户端未能验证服务器证书,而是服务器未能验证客户端证书。 在客户端站点上禁用证书验证对服务器端的证书验证没有影响,这就是这里的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM