J'ai lu dans un article que HttpsURLConnection
négocierait de manière transparente la connexion SSL.
Le document officiel dit:
Cette classe utilise HostnameVerifier et SSLSocketFactory. Des implémentations par défaut sont définies pour les deux classes. [ 1 ]
Est-ce à dire une fois que vous ouvrez une connexion avec
httpsCon = (HttpsURLConnection) url.openConnection();
Il est déjà crypté SSL/TLS sans plus de tracas?
Comment puis-je afficher et définir la version TLS pour l'implémentation standard? (Doit être TLS 1.2 pour Java 8 et TLS 1.0 pour Java 7)
Vous devrez créer un SSLContext
pour définir le Protocoll:
dans Java 1.8:
SSLContext sc = SSLContext.getInstance("TLSv1.2");
// Init the SSLContext with a TrustManager[] and SecureRandom()
sc.init(null, trustCerts, new Java.security.SecureRandom());
dans Java 1.7:
SSLContext sc = SSLContext.getInstance("TLSv1");
// Init the SSLContext with a TrustManager[] and SecureRandom()
sc.init(null, trustCerts, new Java.security.SecureRandom());
alors il vous suffit de définir le SSLContext sur HttpsURLConnection:
httpsCon.setSSLSocketFactory(sc.getSocketFactory());
Cela devrait faire l'affaire.
Vous pouvez également définir le protocole TLS 1.2 avec le JDK 1.7. Par défaut, JDK 1.7 le définira sur 1.0.
SSLContext sc = SSLContext.getInstance("TLSv1.2"); //$NON-NLS-1$
sc.init(null, null, new Java.security.SecureRandom());
HttpsURLConnection con = (HttpsURLConnection) httpsURL.openConnection();
con.setSSLSocketFactory(sc.getSocketFactory());
private static javax.net.ssl.SSLSocketFactory getFactorySimple()
throws Exception {
SSLContext context = SSLContext.getInstance("TLSv1.2");`
context.init(null, null, null);
return context.getSocketFactory();
}
String loginurl ="some url";
HttpsURLConnection connection = null;
URL url = new URL(loginURL);
connection = (HttpsURLConnection) url.openConnection();
javax.net.ssl.SSLSocketFactory sslSocketFactory =getFactorySimple();
connection.setSSLSocketFactory(sslSocketFactory);
Le code ci-dessus peut être utilisé pour activer tls 1.1 ou tls 1.2 dans Java 1.7