验证SSL认证Java / Android

| 我的Android应用程序正在与受SSL证书保护的服务器通信。下面是该代码。
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对话,而不与其他网址对话。
已邀请:
经过快速研究... 使用Java附带的信任库并仅使用ssl通信,可能只是抵御中间人攻击的最佳保护。如果Java不信任服务器提供的证书,则开箱即用将引发异常。 根据我的阅读,黑客很难模仿证书颁发机构提供给站点的密钥。 我可能是错的。
您可以通过以下方式限制HTTPS主机名验证:
SSLSocketFactory sf = new SSLSocketFactory(SSLContext.getInstance(\"TLS\"));
sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
请参阅《 JSSE参考指南》以使用Java SSL连接进行详细自定义。

要回复问题请先登录注册