Android Volley: javax.net.ssl.SSLHandshakeException: (URL-адрес API изменен с http на https) - PullRequest
0 голосов
/ 05 декабря 2018

Когда я отлаживаю свое приложение, используя ( ранее это было http , сейчас https ) "https://ims.domain_name.com/api/". Каждый раз, когда яполучаю исключение ниже:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Когда я использовал приведенный ниже фрагмент кода, он работает нормально, но как только я обновил свое приложение в Google Play Store , мое приложение было отклонено магазином Play Store со словами:

Здравствуйте, Google Play Developer,

Мы отклонили My AppName с именем пакета com.domainName.ims за нарушение нашей политики в отношении вредоносных действий или данных пользователя. Если вы отправили обновление,предыдущая версия вашего приложения по-прежнему доступна в Google Play.

Это приложение использует программное обеспечение, которое содержит уязвимости безопасности для пользователей или позволяет собирать пользовательские данные без надлежащего раскрытия.

Ниже приведен списокпроблем и соответствующих версий APK, которые были обнаружены в вашей недавней отправке. Обновите свои приложения как можно скорее и увеличьте номер версии обновленного APK.

Вот код:

/**
 * Enables https connections
 */
@SuppressLint("TrulyRandom")
public static void handleSSLHandshake() {
    try {
        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }

            @Override
            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        }};

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                return true;
            }
        });
    } catch (Exception ignored) {
    }
}

Затем, я глубоко перебираю в интернете, я понял, что мне нужно включить файл .crt внутримое приложение, т. е. открытый ключ.Но я не нашел правильного решения для этого.

Теперь у меня есть ключ SSL моего сервера, то есть файл .crt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...