Android 7.0 /自签名证书:“找不到证书路径的信任锚”

时间:2018-08-27 12:58:29

标签: android https x509certificate self-signed

我的应用程序访问一个使用自签名证书保护的URL。

版本1

我将“ selfsigned.crt”文件复制到了手机上,然后通过Security - Other Security Settings - Install from device storagecredential use: VPN and apps安装了证书,这也使我设置了PIN。

然后,我将其添加到清单中:

android:networkSecurityConfig="@xml/network_security_config"

...,并在“ res / xml”文件夹中创建了相应的network_security_config.xml文件(建议here):

<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </debug-overrides>
    <base-config>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </base-config>
</network-security-config>

问题是我的应用无法像这样连接到URL,而只会引发异常:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

版本2

如果我将“ selfsigned.crt”文件复制到“ res / raw”文件夹中,并将其添加到xml文件中:

<certificates src="@raw/selfsigned"/>

成功。但这也意味着,如果证书更改,我将不得不更新应用程序。

问题:

我是否错过了版本1中的任何内容,即使您使用的是xml文件,您是否也可能必须创建自己的KeyStore / TrustManager(如here所述)?

顺便说一句,当前我正在使用javax.net.ssl.HttpsURLConnection而不是“基本” URLConnection来打开连接。

0 个答案:

没有答案