elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Conexiones Https a servidor con certificado autofirmado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Conexiones Https a servidor con certificado autofirmado  (Leído 2,989 veces)
alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Conexiones Https a servidor con certificado autofirmado
« en: 20 Junio 2010, 13:43 pm »

Hola a todos, estoy peleandome para conectarme a un servidor por https, dicho servidor tiene un certificado autofirmado X509.

Suponemos que desde la aplicacion que estoy programando (cliente) no se incluye este certificado en el "keystore" por lo tanto hay que mostrar al usuario cierta informacion del certificado para que decida si proceder con la conexion o no.

De momento estoy jugando con unos ejemplos que he encontrado por internet.  Por lo que he visto tengo que generar un SSLContext y en este configurar que conexiones son aceptadas para luego generar un SSLSocketFactory que se pueda añadir a una HttpsUrlConnection (ya que la idea es realizar conexiones directamente a urls sin utilizar sockets).

Para que quede mas claro e codigo es el siguiente:
Código
  1. //Para aceptar certificados que no estan en el keystore del cliente
  2.        SSLContext sc = SSLContext.getInstance("TLS");
  3.        sc.init(null, new TrustManager[] { new SimpleTrustManager1() }, null);
  4.        SSLSocketFactory ssf = sc.getSocketFactory();
  5.  
  6.  
  7.        URL url = new URL("https://192.168.2.2:443/default-ssl/");
  8.        HttpsURLConnection urlConection = (HttpsURLConnection) url.openConnection();
  9.        urlConection.setSSLSocketFactory(ssf);
  10.  


El problema viene cuando quiero establecer que conexiones son aceptadas mediante la clase SimpleTrustManager1 implements X509TrustManager.  Os pongo el boceto que he encontrado a seguir:

Código
  1. public class SimpleTrustManager1 implements X509TrustManager   {
  2.  
  3.    private Set<X509Certificate> certs = new HashSet<X509Certificate>();
  4.  
  5.  
  6.    public SimpleTrustManager1() throws Exception {
  7.      //Cargamos los certificados del Keystore en el atributo certs
  8.   }
  9.  
  10.   public void checkClientTrusted(X509Certificate[] chain, String authType)
  11.      throws CertificateException {
  12.   }
  13.  
  14.   public X509Certificate[] getAcceptedIssuers() {
  15.     return certs.toArray(new X509Certificate[certs.size()]);
  16.   }
  17.  
  18.   public void checkServerTrusted(X509Certificate[] chain, String authType)
  19.      throws CertificateException {
  20.  
  21.      for(int i=0; i<chain.length; i++){
  22.         if(certs.contains(chain[i])){
  23.            return;
  24.         }
  25.      }
  26.  
  27.      System.out.println("El servidor "+chain[0].getIssuerDN()+
  28.         " no se puede verificar. " +
  29.         "¿Desde realizar la conexión de todas formas?");
  30.  
  31.      Scanner s = new Scanner(System.in).useDelimiter("\r\n");
  32.      String opcion = s.next();
  33.      if(!opcion.equalsIgnoreCase("si")){
  34.          throw new CertificateException("La clave no está en el trustore");
  35.      }
  36.   }
  37.  
  38. }
  39.  

Como se pueden cargar los certificados del "Keystore" en el atributo certs, para asi completar la funcionalidad del constructor???

Voy bien encaminado??, os pido paciencia..  Cualquier aporte, consejo, recomendacion en bienvenida.

Gracias de antemano.

alzehimer_cerebral



En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Configurar conexiones Http y Https
Java
alzehimer_cerebral 0 2,865 Último mensaje 24 Junio 2011, 01:38 am
por alzehimer_cerebral
Certificado autofirmado
Seguridad
huerto123 2 2,194 Último mensaje 1 Febrero 2014, 00:03 am
por huerto123
[TUTORIAL] Certificado HTTPS ¡GRATIS! « 1 2 »
Seguridad
kub0x 13 32,795 Último mensaje 13 Junio 2023, 12:28 pm
por Arhoc
cURL error 77 al conectar una https con certificado
PHP
Apokryphos 0 3,663 Último mensaje 21 Junio 2017, 21:35 pm
por Apokryphos
Base de datos de webs con certificado SSL ( HTTPS)
Hacking
Reddington 8 6,438 Último mensaje 2 Enero 2018, 18:04 pm
por Reddington
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines