Как обойти 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(...)
,
Вместо того, чтобы обходить все проверки, лучше использовать определенное хранилище доверенных сертификатов для этих соединений, если вы можете, как описано в этом ответе.