2011-04-19 92 views
1

我有我的android應用程序與受SSL證書保護的服務器通信。以下是該代碼。驗證SSL認證Java/Android

final HttpPost httppost = new HttpPost("https://www.myurl.com"); 
final List<NameValuePair> postlist = Utils.HttpGetToHttpPost(Arguments); 
httppost.setEntity(new UrlEncodedFormEntity(postlist)); 
final HttpResponse response = httpclient.execute(httppost); 

現在我的問題是如何防止MITM攻擊。我如何確保我與myurl.com聊天而不是另一個網址。

回答

1

一些快速的研究後...

使用信任附帶java和只使用SSL通信,可能只是對你的人最好的保護在中間的攻擊。開箱即用的Java如果不能信任服務器提供的證書,將會引發異常。

根據我讀的內容,黑客很難冒充證書頒發機構賦予網站的密鑰。

雖然我可能是錯的。

+0

好吧很酷!非常感謝。我會更多地關注這一點。 – 2011-04-28 05:06:20

1

你可以限制這樣的HTTPS主機名驗證:

SSLSocketFactory sf = new SSLSocketFactory(SSLContext.getInstance("TLS")); 
sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); 

請參考JSSE Reference Guide與Java SSL連接的細節定製。