Samsung SM A550W HTTPS ExtCertPathValidatorException с неверной датой
Мое приложение работает на всех устройствах и симуляторах, кроме Samsung SM-A500W. Просто не удалось обновить базу данных. Доступ к базе данных осуществляется через php-скрипты, хранящиеся в защищенном домене TLD (доступ только через 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 ответа
Я нашел способ обойти эту проблему - скопировать сценарии php в незащищенный домен и убедиться, что они обновляются по мере обновления сценариев. Во время выполнения:- при попытке... получить доступ к базе данных, чтобы изменить домен на незащищенный. Пока работает как шарм. Конечно, доступ к базе данных происходит в асинхронной задаче, кажется нормальным снова вызывать метод, рекурсивно из кода catch.
Я бы посоветовал попробовать обновить провайдера безопасности устройства с помощью сервиса 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
}