我的应用程序访问一个使用自签名证书保护的URL。
版本1 :
我将“ selfsigned.crt”文件复制到了手机上,然后通过Security - Other Security Settings - Install from device storage
和credential 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
来打开连接。