Задать вопрос
zencd
@zencd

Почему соединение с веб-сервером по HTTPS удаётся и без HostnameVerifier?

Есть простейший клиентский код на Джаве, соединяющийся с веб-сервером. Раньше без нижеследующей "припарки" соединение по HTTPS не получалось из-за забыл-какого-эксепшна, аналогично тому как если запустить curl без опции "-k":

// не для продакшна!
X509TrustManager[] DUMMY_TRUST_MANAGERS = {
	new X509TrustManager() {
	    public X509Certificate[] getAcceptedIssuers() { return null; }
	    public void checkClientTrusted(X509Certificate[] certs, String authType) { }
	    public void checkServerTrusted(X509Certificate[] certs, String authType) { }
	}
}
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, DUMMY_TRUST_MANAGERS, new SecureRandom());
connection.setSSLSocketFactory(sslContext.getSocketFactory())
connection.setHostnameVerifier(new HostnameVerifier {
    public boolean verify(String host, SSLSession sslSession) {
        return true
    }
})


К сожалению сейчас не могу воспроизвести тот эксепшн на Java 6 - всё работает и без "припарки". Коннектился к разным серверам - ssllabs, google... JDK уже сносил и ставил заново.

Подскажите как расстроить Джаву чтобы код снова начала падать?

Простейший клиентский код:

URL url = new URL(args[0]);
HttpsURLConnection c = (HttpsURLConnection)url.openConnection();
c.setDoOutput(false);
c.setDoInput(true);
c.connect();
c.getResponseCode();
...
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Power
Я думаю, вы говорите об отсутствии поддержки SNI (в java < 7). Попробуйте подключиться к https://bob.sni.velox.ch/.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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