我有一个Android Studio项目,它调用基于Web的API服务。当服务代码在dev,qa,prod等中时没有证书问题,但是当试图访问web api开发人员框以测试新功能/错误修复/等时,我得到:
因错误而无法回复:
javax.net.ssl.SSLHandshakeException:链验证失败
在com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)
我有从服务开发者机器导出的自签名证书,没有私钥DER编码。我掉到了模拟器上并“安装”但这不起作用。
我使用了相同的证书并复制到模拟的SD卡。然后从模拟器中的安全设置安装。结果相同。链验证失败。
现在我的安全/证书知识非常基础。我认为错误实际上描述了这个问题。自签名证书中没有链条......但我可能错了。
无论如何,我该如何解决这个问题?
我希望能够运行我的Android代码并点击开发人员框进行测试/调试等。
我已经阅读了这样的帖子,只是为了拥有企业环境,我正在阻止开放SSL等网站。
我通过WebView访问该服务。
导致此问题的原因可能是设备的错误日期时间
我得到了
javax.net.ssl.SSLHandshakeException: Chain validation failed
和
java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
对我有用的解决方案是通过虚拟设备管理器 - >操作下拉菜单 - >冷启动立即强制冷启动模拟器
只需重新启动模拟器即可解决此错误。长按仿真器菜单中的“关闭电源”按钮,然后选择“重新启动”。
我清除了模拟器的所有数据并再次启动它,安装了应用程序,一切正常。但看到其他解决方案,我认为现在可能是一种矫枉过正。
我知道这是一个古老的问题,但我有一个类似的问题,有一个完全不同的解决方案。
确保您的SSL未过期。一旦我解决了这个问题,我就不再收到“javax.net.ssl.SSLHandshakeException:Chain validation failed”错误。我有其他问题,但这是一个不同的主题。
这听起来像是一个显而易见的解决方案,但它是值得关注的东西,而不一定是人们心中的第一件事。