Android模拟器“链验证失败”将开发人员计算机与自签名证书

时间:2017-08-28 16:42:50

标签: android ssl-certificate

我有一个调用基于Web的API服务的Android Studio项目。当服务代码在dev,qa,prod等中时没有证书问题但是当试图点击web api开发人员框以测试新功能/错误修复/等时我得到:

  

因错误而无法回复:

     

javax.net.ssl.SSLHandshakeException:链验证失败

     

在com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)

我有从服务开发者机器导出的自签名证书,没有私钥DER编码。我下载到模拟器上并“安装”但这不起作用。

我使用了相同的证书并复制到模拟的SD卡。然后从模拟器中的安全设置安装。结果相同。链验证失败。

现在我的安全/证书知识非常基础。我认为错误实际上描述了这个问题。自签名证书中没有链条......但我可能错了。

无论如何,我该如何解决这个问题?

我希望能够运行我的Android代码并点击开发人员框进行测试/调试等。

我已经阅读了这样的帖子,只是为了拥有企业环境,我正在阻止开放SSL等网站。

https://android.stackexchange.com/questions/61540/self-signed-certificate-install-claims-success-but-android-acts-as-if-cert-isn

我通过WebView访问该服务。

6 个答案:

答案 0 :(得分:46)

此问题的原因可能是设备的日期时间错误

答案 1 :(得分:11)

我得到了

javax.net.ssl.SSLHandshakeException: Chain validation failed

java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date

对我有用的解决方案是通过虚拟设备管理器强制冷启动仿真器 - >行动下拉菜单 - >现在冷启动

答案 2 :(得分:7)

只需重新启动模拟器即可解决此错误。 长按仿真器菜单中的关闭电源按钮,然后选择重新启动

答案 3 :(得分:0)

我清除了模拟器的所有数据,然后再次启动,安装了应用程序,一切正常。但是,我现在看到了其他解决方案,我认为这可能是一个过大的杀伤力。

答案 4 :(得分:0)

我知道这是一个古老的问题,但是我有一个类似的问题,但解决方案却完全不同。

确保您的SSL没有过期。解决此问题后,我不再遇到“ javax.net.ssl.SSLHandshakeException:链验证失败”错误。我还有其他问题,但这是一个不同的话题。

这听起来像是一个显而易见的解决方案,但这是值得研究的东西,不一定是人们脑海中的第一件事。

答案 5 :(得分:0)

在遇到此问题时,请考虑使用备用Internet连接

我已经检查了日期和日期,显然是在我的情况下重新启动了我的模拟器,甚至是Mac

出现此错误是因为我的网络连接不良。

javax.net.ssl.SSLHandshakeException: Chain validation failed

额外:我认为此异常需要更明确,因为它有太多的触发器