Как обойти SSL аутентификации URL-адреса мудрым в Java?

Я создаю Java-приложение, в котором мне нужно обойти аутентификацию SSL для некоторых URL-соединений, а не для всех URL-соединений. В настоящее время я использую следующий код:

TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }
        public void checkClientTrusted (
            java.security.cert.X509Certificate[] certs, String authType) {
        }
        public void checkServerTrusted (
            java.security.cert.X509Certificate[] certs, String authType) {
        }
    }
};
try {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
} catch (Exception e) {
}

В этом коде все URL-соединения пропускают SSL-аутентификацию, пока приложение не будет перезапущено.

Есть ли способ, чтобы мы могли пропустить проверку подлинности SSL только для некоторых URL-соединений, а не для всех URL-соединений?

1 ответ

Вместо того, чтобы использовать HttpsURLConnection.setDefaultSSLSocketFactory глобально в классе, брось свой URLConnection экземпляр в HttpsURLConnection экземпляр и использование setSSLSocketFactory(...),

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

Другие вопросы по тегам