【问题标题】:Make https connections using TLS as underlying protocol使用 TLS 作为底层协议进行 https 连接
【发布时间】:2015-04-15 07:42:06
【问题描述】:

在我的 android 代码中,我试图连接到一个特定的 url,比如

URL url = 新 URL(urlStr);

HttpsURLConnection 连接 = (HttpsURLConnection) url.openConnection();

在这里,我的应用程序正在尝试在某些手机中通过 SSL 连接到 url(https),​​并使用 TLS 作为底层协议。由于目标服务器仅接受 TLS,因此通过 SSL 启动 https 连接的手机会失败。

已通过wireshark确认上述行为。

有没有办法让我的应用只能通过 TLS 发起 https 连接。

谢谢。

【问题讨论】:

  • “由于目标服务器仅接受 TLS,因此通过 SSL 启动 https 连接的手机失败。”它不应该那样做。它应该在握手期间升级连接。请发布您收到的实际错误消息。

标签: android ssl


【解决方案1】:

您可以通过使用 SSLContext 类设置提供程序来做到这一点。

SSLContext context = SSLContext.getInstance("TLS");
    context.init(null, null, null);
    SSLSocketFactory factory = context.getSocketFactory();
    httpURLConnection.setSSLSocketFactory(factory);

但是有一个已知的issue,因此它可能不适用于所有设备。有关 SSL 的更多信息,请参阅android training

【讨论】:

  • 感谢您的回复。我正在使用您在那里评论的任何代码。让我看看你建议的链接。
  • 有没有其他方法可以告诉我的应用仅通过 tls 连接到基于 https 的 url....
猜你喜欢
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
相关资源
最近更新 更多