2013-07-31 25 views
1

我面臨Apache HTTPS客戶端的奇怪問題。我試圖連接到啓用了基本身份驗證的外部HTTPS網站(僅限SSL服務器身份驗證)。這是我的測試和結論的總結。HTTPSURLconnection和Apache之間的證書鏈不同(系統)DefaultHttpClient

  • 使用Chrome瀏覽/火狐/ IE的連接到網站 - >成功

  • 使用javax.net.ssl.HttpsURLConnection - >成功

  • 二者必選其一的DefaultHttpClientSystemDefaultHttpClient - >失敗

我試圖通過啓用「javax.net.debug」到「ssl」進行調試。我注意到兩個客戶端都選擇了相同的信任存儲(默認的JDK信任存儲)並使用相同的協議(TLSv1)。 然而,分歧在這裏

我注意到下面的擴展是由JDK

擴展服務器名返回,服務器名:上述擴展失蹤而:[websitehostname HOST_NAME]

在Apache Web客戶端調試日誌中。

此外,我看到一個更差是在天然的certficate鏈

的下面響應從JDK

*證書鏈 鏈[0] = [ [ 版本:V3 主題:** CN = websitename,OU =域控制驗證 - RapidSSL(R),OU =參見www.rapidssl.com/resources/cps(c)13,OU = GT17702541,SERIALNUMBER = Q2La1fpFlFdNy4kUCIehYlMvw6bq64Ch 簽名算法:SHA1withRSA,OID = 1.2.840.113549.1.1.5

而在阿帕奇客戶端的以下

鏈[0] = [[版本:V3主題:EMAILADDRESS =根@ i4319, CN = i4319,OU = SomeOrganizationalUnit,O = SomeOrganization,L = SomeCity, ST = SomeState,C = - 簽名算法:SHA1withRSA,OID = 1.2.840.113549.1.1.5

,顯然我得到的F使用Apache https客戶端拋出異常。

Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 

在我回去重做我的工作以使用JDK本地客戶端之前,我想知道發生了什麼。 任何有關這種行爲的見解,將不勝感激。

+1

我真的沒有線索的JIRA(在SSLSocketFactory的最終基本的Apache HTTP客戶端與JDK用於HTTPSURLConnection的內容相同),但首先想到的可能是代理設置,應啓用「線」調試並檢查一個客戶端或其他客戶端是否通過一個客戶端進行檢查... 代理服務器是擅長基因在進行SSL過濾時對僞造的證書進行評級。 – GPI

+0

如果你在談論我的網絡中的代理,那麼我必須說,我從來沒有配置過一個(例如在瀏覽器中)。 – javadeveloper

回答

相關問題