Есть простейший клиентский код на Джаве, соединяющийся с веб-сервером. Раньше без нижеследующей "припарки" соединение по 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();
...