我有一个 Android 应用程序,它通过 HTTP POST 请求与后端服务器进行通信。我想将其升级到 HTTPS。我使用的 API 是 HttpLib.postRequest。
我发现直接连接到我的 Apache 服务器工作正常。但通过负载均衡器的连接不起作用。我的负载均衡器是阿里云的。我尝试过两种不同的负载均衡器,两者都以同样的方式失败。直接症状是我在电话上收到“unknown_err”。
我可以使用 tcpdump 捕获流量,这证明它正在连接到正确的位置并尝试进行协商。会话结束时客户端发送 HTTPS 错误“证书未知 (46)”。
通常这是由错误的证书或配置引起的。但我知道我的证书都是有效的。其他浏览器可以正常连接到同一服务器来加载正常网页。同一应用程序的 iOS 版本也运行良好。即使应用程序无法连接,在 Android 手机上浏览网站也能正常工作。该网站是https://zaomengshe.com,因此您可以在那里查看证书。我还有一个不同的设置,包括负载均衡器和 Let's Encrypt 的证书。
我猜想阿里云的负载均衡器和 Android 的某些特殊性阻碍了成功的协商。也许我需要启用对某些算法或密钥大小或其他内容的支持。我确实读到,直到 API 版本 20 才支持 TLS 1.2,因此我将最低支持版本更新为 20。但这没有帮助。
| 归档时间: | 
 | 
| 查看次数: | 5426 次 | 
| 最近记录: |