Разрешение Java использовать недоверяемый сертификат для SSL/подключения HTTPS

Лучшая аналогия, о которой я могу думать, является аналогией найма механика.

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

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

56
задан CoolBeans 27 September 2011 в 03:43
поделиться

1 ответ

Здесь приведен соответствующий код:

// Create a trust manager that does not validate certificate chains
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) {
        }
    }
};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}

// Now you can access an https URL without having the certificate in the truststore
try {
    URL url = new URL("https://hostname/index.html");
} catch (MalformedURLException e) {
}

Это полностью отключит проверку SSL - только не изучайте обработку исключений из такого кода!

Чтобы делать то, что вы хотите, вы придется реализовать проверку в TrustManager, которая запрашивает пользователя.

96
ответ дан 26 November 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: