example clase java ssl httpsurlconnection

clase - httpurlconnection java https example



Java HttpsURLConnection y TLS 1.2 (3)

Deberá crear un SSLContext para configurar el Protocoll:

en 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());

en Java 1.7 :

SSLContext sc = SSLContext.getInstance("TLSv1"); // Init the SSLContext with a TrustManager[] and SecureRandom() sc.init(null, trustCerts, new java.security.SecureRandom());

entonces solo tiene que establecer el SSLContext en HttpsURLConnection :

httpsCon.setSSLSocketFactory(sc.getSocketFactory());

Eso debería hacer el truco.

Leí en un artículo que HttpsURLConnection negociará de forma transparente la conexión SSL.

El documento oficial dice:

Esta clase utiliza HostnameVerifier y SSLSocketFactory. Hay implementaciones por defecto definidas para ambas clases. [ 1 ]

¿Significa eso una vez que abres una conexión con

httpsCon = (HttpsURLConnection) url.openConnection();

¿Ya está cifrado SSL / TLS sin más problemas?

¿Cómo puedo ver y configurar la versión TLS para la implementación estándar? (Debería ser TLS 1.2 para Java 8 y TLS 1.0 para Java 7)

Referencias

  1. Oracle Corp. (2011). 1 . (JavaDoc)

También puede establecer el protocolo TLS 1.2 con el JDK 1.7. Por defecto, JDK 1.7 lo configurará a 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);

El código anterior se puede usar para habilitar tls 1.1 o tls 1.2 en java 1.7