Не удается загрузить ответ API в Android из-за неправильной даты в устройстве с URL-адресом https - PullRequest
0 голосов
/ 18 октября 2018

Когда я вызываю API, размещенный на безопасном сервере SSL (https), и если дата и время системы неверны (установлены вручную), то у нас возникают следующие ошибки.

javax.net.ssl.SSLHandshakeException: Chain validation failed
java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
java.security.cert.CertPathValidatorException: Could not determine revocation status

Есть ли способ разрешитьприложение для загрузки формы ответа API даже с неправильными мобильными датой и временем?

Странная проблема в том, что все другие приложения работают нормально, даже если есть API с https.какие изменения мне нужно сделать, чтобы мобильное приложение могло также вызывать API (https) с неправильной датой и временем.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

У меня похожая проблема.Устройство эмулятора имеет неверную дату и HTTPS-соединения прерываются.Вы можете попытаться использовать некоторый экзамен.

Когда мне пришлось решать такую ​​проблему, я обнаружил, что простое решение является лучшим: просто измените дату и время устройства.

Для этогос помощью команд оболочки попробуйте эти ссылки на medium и на StackOverflow .

Надеюсь, это поможет вам.

0 голосов
/ 18 октября 2018

Добавьте сертификат доступа

private static SSLSocketFactory getSSLSocketFactory() {
    try {
        // Create a trust manager that does not validate certificate chains
        final TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return new java.security.cert.X509Certificate[]{};
                    }
                }
        };

        // Install the all-trusting trust manager
        final SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
        // Create an ssl socket factory with our all-trusting manager
        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        return sslSocketFactory;
    } catch (KeyManagementException | NoSuchAlgorithmException e) {
        return null;
    }

}

Теперь добавьте фабрику сокетов SSL, как показано ниже

         httpClient.sslSocketFactory(getSSLSocketFactory());
         httpClient.hostnameVerifier(new HostnameVerifier() {
         @Override
         public boolean verify(String hostname, SSLSession session) {
         return true;
           }
         });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...