Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Evitar el soporte para TLS 1.1 en un SSLServerSocket

Estas en el tema de Evitar el soporte para TLS 1.1 en un SSLServerSocket en el foro de Java en Foros del Web. Que tal Amigos, tengo un SSLServerSocket que soporta SSL y TLS, sólo que con fines de seguridad quiero que deje de soportar TLS1.1 o inferior. ...
  #1 (permalink)  
Antiguo 13/08/2015, 11:47
 
Fecha de Ingreso: febrero-2015
Ubicación: Distrito Federal
Mensajes: 38
Antigüedad: 9 años, 2 meses
Puntos: 1
Pregunta Evitar el soporte para TLS 1.1 en un SSLServerSocket

Que tal Amigos, tengo un SSLServerSocket que soporta SSL y TLS, sólo que con fines de seguridad quiero que deje de soportar TLS1.1 o inferior.
¿Alguna idea de como hacer esto?

Este es mi código:
Código Java:
Ver original
  1. ServerSocket res = null;
  2.         SSLServerSocket ssocket = null;
  3.         try (InputStream is = new FileInputStream(certPath)) {
  4.             char[] chPwd = sPassWS.toCharArray();
  5.             KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
  6.             keyStore.load(is, chPwd);
  7.  
  8.             TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
  9.             tmf.init(keyStore);
  10.             SSLContext ctx = SSLContext.getInstance("TLS");
  11.  
  12.             KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
  13.             kmf.init(keyStore, chPwd);
  14.             ctx.init(kmf.getKeyManagers(), null/*tmf.getTrustManagers()*/, null);
  15.  
  16.             SSLServerSocketFactory ssocketFactory = ctx.getServerSocketFactory();
  17.  
  18.             res = ssocketFactory.createServerSocket();
  19.            
  20.             String[] enabledCipherSuites = {
  21.                         "SSL_RSA_WITH_RC4_128_SHA",
  22.                         "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",                    
  23.                         "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",                    
  24.                         "TLS_KRB5_WITH_RC4_128_SHA",
  25.                         "TLS_RSA_WITH_AES_128_CBC_SHA",
  26.                        
  27.                         "TLS_RSA_WITH_NULL_SHA256",
  28.                         "TLS_RSA_WITH_AES_128_CBC_SHA256",
  29.                         };
  30.         ssocket = (SSLServerSocket) res;               
  31.             ssocket.setEnabledCipherSuites(enabledCipherSuites);
  32.  
  33.             ssocket.setReuseAddress(true);
  34.             ssocket.bind(sAdress, 100);
  35.         } catch (Throwable ex) {
  36.             ex.printStackTrace();
  37.         }
  38.         return ssocket;

por cierto todo esto esta dentro de un método que construye el ServerSocket seguro por eso es que termina en return y algunas variables que ven son globales
  #2 (permalink)  
Antiguo 13/08/2015, 15:00
 
Fecha de Ingreso: febrero-2015
Ubicación: Distrito Federal
Mensajes: 38
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Evitar el soporte para TLS 1.1 en un SSLServerSocket

Me respondo a mi mismo. La forma para hacer que el socket seguro acepte solo TLS1.2 y ninguna versión anterior como TLS1.1, TLS1 ni SSL3 es agregando solo el Cipher requerido.

Quedaría así en mi caso:

Código Java:
Ver original
  1. String[] enabledCipherSuites = { "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"};
  2. ssocket = (SSLServerSocket) res;          
  3. ssocket.setEnabledCipherSuites(enabledCipherSuites);

Etiquetas: desactivar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:53.