日期错误的Samsung SM A550W HTTPS ExtCertPathValidatorException

时间:2018-10-25 15:33:39

标签: android https samsung-mobile-sdk

我的应用程序可在除Samsung SM-A500W之外的所有设备和模拟器上运行。它只是无法更新数据库。通过存储在TLD安全域中的php脚本访问数据库(仅通过httpS访问)。 失败是因为它认为证书的过期日期已通过。请参阅LogCat。

10-25 11:07:18.381 25547-25617/uro2.tradersmicro.com.uro2 D/Uploadi16: Exception jb: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at Sat Feb 18 18:59:59 EST 2017 (compared to Thu Oct 25 11:07:18 EDT 2018) javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at Sat Feb 18 18:59:59 EST 2017 (compared to Thu Oct 25 11:07:18 EDT 2018)

顺便说一句。我的应用程序片段之一使用WebView。这部分的安全数据库访问是正常的。

有办法避免这种错误吗?

2 个答案:

答案 0 :(得分:0)

我发现规避此问题的方法是将php脚本复制到一个非安全域,并确保在脚本更新时对其进行更新。 在运行时:-在try ... catch中,将数据库访问权限更改为不安全的域。到目前为止,它的工作原理很迷人。 当然,数据库访问是在Async任务中进行的,可以从catch代码中递归地再次调用该方法。

答案 1 :(得分:0)

我建议尝试使用Google Play服务更新设备安全提供商:

https://developer.android.com/training/articles/security-gms-provider

import com.google.android.gms.security.ProviderInstaller;

// ....

try {
  ProviderInstaller.installIfNeeded(getContext());
} catch (GooglePlayServicesRepairableException e) {
  // TODO handle error
}