2017-06-01 86 views
1

我试图连接到在Android Studio中使用自签名证书的网站。我收到提示接受Android Studio中的自签名证书Java代码

java.security.cert.CertPathValidatorException:信任锚 证书路径没有找到

的,我称之为openStream()的URL对象。

由于我的代码位于测试环境中,因此我正在寻找解决方案来完全禁用证书检查或明确允许证书。

昨天我花了几个小时寻找解决方案,但每个指南都有几年的历史,并使用折旧的HTTP库。

回答

0

除了@CommonsWare的回答,如果您的目标是API 14(ISC)或更高版本,您可以选择在应用程序之外的设备上安装额外的可信证书。说明可以找到here

使用此方法安装的证书由设备上的所有应用程序使用。

在API 14-23上,默认情况下用户安装的证书是可信的。然而,在API 24(Nougat)上,用户添加证书的处理已更改,并且默认情况下不受信任。为了使用户值得信赖定义证书,下面的代码添加到network config

<network-security-config> 
     <base-config> 
      <trust-anchors> 
       <!-- Trust preinstalled CAs --> 
       <certificates src="system" /> 
       <!-- Additionally trust user added CAs --> 
       <certificates src="user" /> 
      </trust-anchors> 
     </base-config> 
</network-security-config> 

更多信息有关与办证的牛轧糖的变化可以发现here

+0

没有建议的修复程序似乎为我工作。我的问题是模拟器本身阻止了证书吗?我找不到在Nexus 5仿真器中添加证书的方法。 – Keifer

+0

@Keifer,那么我建议你在问题中添加更多信息:emuletor类型,操作系统版本,你尝试过的和失败的 – Vasiliy