【问题标题】:Validate SSL Certification Java/Android验证 SSL 认证 Java/Android
【发布时间】:2011-04-19 00:59:27
【问题描述】:

我的 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 而不是另一个 url 交谈。

【问题讨论】:

    标签: java android security ssl


    【解决方案1】:

    经过一些快速研究...

    使用 java 附带的信任库并仅使用 ssl 通信,可能是您抵御中间人攻击的最佳保护。 Java,开箱即用,如果不能信任服务器提供的证书,会抛出异常。

    根据我的阅读,黑客很难冒充证书颁发机构提供给网站的密钥。

    我可能是错的。

    【讨论】:

      【解决方案2】:

      您可以通过这种方式限制 HTTPS 主机名验证:

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

      Java SSL 连接的详细定制请参考JSSE Reference Guide

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 2021-03-10
        • 2014-03-30
        • 2019-06-28
        相关资源
        最近更新 更多