2010-11-24 76 views
2

我有這樣的:SSL客戶端 - 什麼時候需要證書?

SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); 
    SSLSocket socket = (SSLSocket) factory.createSocket("www.verisign.com", 443); 

這是2號線失敗與「連接被拒絕」的錯誤。

現在,我還需要在我的信任商店安裝verisign的證書,然後纔可以執行上述操作?我的印象是我可以連接到SSL服務器並執行getPeerCertificates()來獲取證書。這不是我們的瀏覽器所做的嗎?否則,他們將如何知道使用哪個簽署授權?

(很顯然,我使用威瑞信作爲一個例子。我真正的網址是過於的fugly用在這裏...)

+0

我不得不懷疑我是否被防火牆或其他東西燒燬。我甚至不能這樣做:URL url = new URL(「www.google.com」); HttpURLConnection con =(HttpURLConnection)url.openConnection();然後從con.getInputStream() – 2010-11-24 20:42:15

回答

1

連接被拒絕意味着目標主機:端口或防火牆阻礙了監聽。這在邏輯上和時間上比任何SSL都好。

1

你檢查遠程服務實際上是建立和運行,並且您可以連接到它?也許「連接被拒絕」錯誤實際上是被拒絕的連接。 :-)

+0

讀取https://www.verisign.com似乎到了;-) – 2010-11-24 19:09:44

+0

@託尼恩尼斯:他說,這不是他實際連接到的網站,但他沒有想要顯示網址。問題的最後一句話:) – 2010-11-25 06:16:52

+0

是的,但我真的嘗試了verisign網站。它也無法連接到那個。 (問:Verisign是否使用自簽證書?lolz) – 2010-11-25 14:54:01

1

通常您不需要明確地在您的計算機上安裝服務器的證書。 PKI的工作方式是,您的系統應該能夠驗證服務器的證書,而無需事先了解它。但是,只有當您的服務器證書具有「已知CA」(即已知客戶機系統上已列出其根證書或其他證書的證書頒發機構)的根證書時,這纔會起作用。如果情況並非如此(例如,您在服務器上有自簽名或其他自定義證書),則在提及的類可以正確驗證服務器證書之前,您確實需要在客戶端系統上安裝證書。您可以閱讀about certificates and how they are used in SSL here