我有一个调用基于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等网站。
我通过WebView访问该服务。
答案 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
额外:我认为此异常需要更明确,因为它有太多的触发器