android - 如何从 Android 启用和使用 TLSv1.0?
问题描述
我正在编写一个应用程序,它应该对服务器执行一些 HTTP 请求。不幸的是,该服务器仅支持 TLSv1.0 或 SSLv3。
我尝试按照此答案中的建议创建自定义 SSLSocketFactory,但似乎平台根本不支持 TLSv1.0,而使用 TLSv1.1 或更高版本会导致握手错误。
但同时,我能够从模拟器中的浏览器连接到目标服务器,所以总体上应该是可以的。
client = OkHttpClient.Builder()
.sslSocketFactory(TLSSocketFactory(sslContext.socketFactory), trustManager)
.build()
其中 TLSSocketFactory 是仅启用了 TLSv1.0 的自定义类。我收到握手失败或协议不受支持的错误消息。
是否可以启用 TLSv1.0 以及如何启用?
解决方案
OkHttp
如果确实需要,您需要将版本降级到3.x
仍然支持它的版本。
正确的解决方法是更新服务器端的可用密码,以便用现代密码替换 TLS 1.0。仅仅因为可以使用它,并不意味着它会有意义;TLS 1.0 只提供了想象中的安全性,这是一件危险的事情。
推荐阅读
- c# - 在析构函数中使用空条件运算符是不好的做法吗?
- ios - 生成 iOS 证书和配置文件
- php - 将 Laravel Spark 从 v4.0 升级到 v5.0
- javascript - 在 AJAX MVC 中使用 Antiforgerytoken
- regex - 带有 g 修饰符的正则表达式捕获仅捕获第一次出现
- java - java stream Collectors.groupingBy() 多个字段
- python - csrf_exempt 的用例
- c# - Async/Await SemaphoreSlim 仅最新任务
- python - ThreadPoolExecutor、ProcessPoolExecutor 和全局变量
- android - 当我使用另一个活动返回它时,我增加的变量会自行重置