GPG*_*GVM 28 ssl android ssl-certificate android-emulator
我有一个android工作室项目,调用基于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访问该服务.
任何帮助,指针,想法将不胜感激.
TIA
Dig*_*iro 90
导致此问题的原因可能是设备的错误日期时间
Mit*_*ora 16
如果调用HTTPS API并且设备日期时间不正确,就会出现这种异常。
这意味着连接证书无效,因为日期时间不正确。这就是 SSL 握手失败的原因。
解决方案:处理 API 的异常并向用户显示 toast/snackbar/page 以更改设备日期时间。
例外情况:
javax.net.ssl.SSLHandshakeException: Chain validation failed
...
Caused by: java.security.cert.CertificateException: Chain validation failed
...
Caused by: java.security.cert.CertPathValidatorException: timestamp check failed
...
Caused by: java.security.cert.CertificateNotYetValidException: Certificate not valid until Thu Aug 26 05:30:00 GMT+05:30 2021 (compared to Wed Mar 16 17:03:55 GMT+05:30 2016)
...
Run Code Online (Sandbox Code Playgroud)
Cal*_*len 15
我得到了
javax.net.ssl.SSLHandshakeException: Chain validation failed
Run Code Online (Sandbox Code Playgroud)
和
java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
Run Code Online (Sandbox Code Playgroud)
对我有用的解决方案是通过虚拟设备管理器 - >操作下拉菜单 - >冷启动立即强制冷启动模拟器
| 归档时间: |
|
| 查看次数: |
14526 次 |
| 最近记录: |