Acceder a un webservice que necesita certificados
En muchas ocasiones tenemos que programar en Java un cliente que ataque a un webservice
que requiere certificados y ssl para conectarse.
Para ello debemos generar un almacen de claves con el certificado público del webservice:
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() ); System.setProperty("javax.net.ssl.trustStorePassword", "123456"); System.setProperty("javax.net.ssl.trustStore","/tmp/almacen_de_claves");
Para generar el almacen de claves, en primer lugar tenemos que conseguir el certificado del webservice:
Nos haremos valer de la herramienta openssl
openssl s_client -connect host_del_webservice:443
Este comando nos mostrará información del certificado durante la conexión.
Tendremos que copiar esa información en un fichero para generar nuetro almacén de claves
( Java KeyStore ). Yo lo he guardado en /tmp/almacen.txt
La manera de importarlo al almacén de claves es mediante el comando keytool que viene en la instalación de java (directorio bin)
keytool -import -keystore /tmp/nuevo_almacen -file /tmp/almacen.txt -alias almacen