2013-10-23 21 views
0

我在寫一個Android應用程序,需要執行與我的網絡中的某個Web服務器的HTTPS連接。將用戶信任的證書用於HTTPS連接

此Web服務器具有由自定義證書頒發機構簽名的服務器證書,顯然,嘗試進行簡單連接失敗的原因是在設備嘗試建立連接時CA不知道:足夠公平。

現在我在設備上下載了CA證書,並將其導入到用戶「可信證書」設置頁面。它出現了(在「用戶」選項卡下),我可以點擊它並看到它有預期的細節。

然而,這種新的CA證書似乎是由設備被忽略,當它進行HTTPS連接,我得到了確切的同樣的錯誤我連接時收到了:

信任錨認證路徑沒有找到。

如果我嘗試瀏覽使用設備上的Chrome的服務器,會發生同樣的事情。我被告知「這個網站的安全證書存在問題」。

我使用openssl verify測試了我的認證鏈,看起來一切正常。

我很想知道這裏發生了什麼。

我可以在無法在瀏覽器中打開Web服務器頁面的情況下生活,但我希望至少能夠使用用戶「可信憑證」列表從我的應用程序建立連接(並且禁用證書驗證一共是而不是一個可接受的解決方案)。

我該怎麼做?

+0

你不能把它當作自簽名證書嗎? –

+0

@ user2310289:對待同樣的...什麼? – ereOn

回答

0

我終於找到什麼是錯的:

我所用:

SSLContext sslContext = SSLContext.getInstance("TLS"); 

由於某種原因,無法與我的測試瓶SSL只啓用服務器正常工作。

事情是更好的,當我把它改爲:

SSLContext sslContext = SSLContext.getInstance("SSL"); 

不過不知道爲什麼出現這種情況,但它清楚地解決了這個問題對我來說。