HttpsURLConnection 和 TLSv1.2

HttpsURLConnection and TLSv1.2

我正在使用 HttpsURLConnection 在我的 android 应用程序上执行 http 调用,其中一些调用到 AWS。 由于 AWS 即将取消对 SSLv3 的支持,我需要确保我的调用支持 TLSv1.2。

HttpsURLConnection 默认支持 TLSv1.2 还是我应该明确配置它以使用它而不是 SSLv3?

Android 所有版本都支持 SSLv3 和 TLSv1。从 API 级别 16,Android 开始支持 TLSv1.1 和 TLSv1.2。如果您的目标在 API 级别 16 或以上,您应该没问题。对于低于 16 的目标,Android 将在服务器支持时使用 TLSv1。您可以针对支持 TLSv1 或更高版本的端点测试您的应用程序,例如 https://www.banner.iup.edu/. See SSLEngine and SSLContext 以获取更多详细信息。

在使用 Android 的 HttpsURLConnection 时,您可以使用 NetCipher 库获取现代 TLS 配置。 NetCipher 将 HttpsURLConnection 实例配置为使用最受支持的 TLS 版本,以及该 TLS 版本的最佳密码套件。首先,将其添加到您的 build.gradle:

compile 'info.guardianproject.netcipher:netcipher:1.2'

或者您可以下载 netcipher-1.2.jar 并将其直接包含在您的应用程序中。然后而不是调用:

HttpURLConnection connection = (HttpURLConnection) sourceUrl.openConnection();

调用这个:

HttpsURLConnection connection = NetCipher.getHttpsURLConnection(sourceUrl);