我有一个用 Java 和 Springboot 构建的后端并部署在铁路上。 当我在从 14 到 6 的各种 Android 版本上测试端点时,除了 Android 7.0 (Nougat) 之外,它们都可以正常工作,在 Android 7.0 (Nougat) 上,我不断收到此错误消息:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我还没有尝试过任何解决方案。 我使用 Retrofit,它适用于我在 kotlin 中的 Android 应用程序。
我该怎么做才能解决这个问题?
此异常表示手机不信任 SSL 机构。正如 @Markus Kauppinen 在评论中建议的那样,您必须设置 网络安全配置。
下载您的服务器证书并将其保存到
raw
资源目录中。
在
network_security_config
资源目录中创建 xml
文件并为您的服务器域设置配置。如果您的应用程序与 Firebase 等其他服务器通信,请不要忘记也将它们包含在内:
在
network_security_config.xml
中,只需将 yourdomain.com 替换为您的实际域名。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">yourdomain.com</domain>
<trust-anchors>
<certificates src="@raw/server_cert" />
<certificates src="system" />
</trust-anchors>
</domain-config>
</network-security-config>
AndroidManifest.xml
中的配置,放入application
标签<application
android:networkSecurityConfig="@xml/network_security_config"
...
>
使用此解决方案,它应该可以在 Android 7+ 上正常工作。