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
//Para aceptar certificados que no estan en el keystore del cliente SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager[] { new SimpleTrustManager1() }, null); SSLSocketFactory ssf = sc.getSocketFactory(); HttpsURLConnection urlConection = (HttpsURLConnection) url.openConnection(); urlConection.setSSLSocketFactory(ssf);
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
public class SimpleTrustManager1 implements X509TrustManager { private Set<X509Certificate> certs = new HashSet<X509Certificate>(); //Cargamos los certificados del Keystore en el atributo certs } } } for(int i=0; i<chain.length; i++){ if(certs.contains(chain[i])){ return; } } " no se puede verificar. " + "¿Desde realizar la conexión de todas formas?"); if(!opcion.equalsIgnoreCase("si")){ } } }
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