Android 7.0 上的 SSL 握手问题

问题描述 投票:0回答:1

我有一个用 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 应用程序。

我该怎么做才能解决这个问题?

java android ssl ssl-certificate android-7.0-nougat
1个回答
0
投票

此异常表示手机不信任 SSL 机构。正如 @Markus Kauppinen 在评论中建议的那样,您必须设置 网络安全配置

  1. 下载您的服务器证书并将其保存到

    raw
    资源目录中。

  2. 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>
  1. 应用
    AndroidManifest.xml
    中的配置,放入
    application
    标签
<application
   android:networkSecurityConfig="@xml/network_security_config"
   ...
>

使用此解决方案,它应该可以在 Android 7+ 上正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.