我正在创建一个简单的 Android 应用程序,将在封闭的本地网络中使用。在此本地网络中,正在运行 Flask 服务器,该服务器配置为通过 nginx 代理使用自签名证书。服务器的后端应用程序使用自签名证书可以正常工作,我已经使用浏览器和邮递员验证了这一点。(显然,我必须明确要求浏览器信任我的证书)。
几天来,我一直试图在网上找到一些关于如何让我的 Android 应用程序接受我的证书的明确答案,但我尝试过的所有事情都让我走进了死胡同。有时这些解决方案已被弃用,有时又对于这样一件微不足道的事情来说太复杂了。
http请求是使用Retrofit发送的;据我了解,我必须以某种方式配置改造实例的 http 客户端以接受我的证书。
我已经设法使用接受任何证书的客户端,但这不是我想要的。理想情况下,我的证书将添加到官方 CA 默认信任的证书“集”中,以便应用程序也可以向外部资源发送请求。
那么,假设后端应用程序运行在例如 192.168.1.10:443 上,我该如何处理呢?
注意:我已阅读此处给出的说明https://developer.android.com/training/articles/security-config.html#TrustingAdditionalCas 并添加了
android:networkSecurityConfig="@xml/network_security_config"
到我的清单文件,但我收到以下错误:
Hostname 192.168.1.10 not verified: certificate sha256/...../.....
并继续列出证书的信息,如通用名称等。