簡體   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