lunes, 14 de junio de 2010

javax.net.ssl.SSLHandshakeException - Instalar certificados en la Maquina Virtual Java

Tuve este inconveniente con la aplicacion en la que trabajo, este es parte del trace y debajo esta la solucion:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Eventualmente cuando queremos acceder a un servicio web atraves de nuestra aplicacion Java, necesitemos instalar un certificado a nuestra maquina virtual, para ello primero necesitaremos bajar dicho certificado en nuestra pc y luego instalarlo en la JVM


Para guardar el el certificado en la pc

Acceder a traves de un IE al wsdl del web services, una vez abierto ir a
file-> properties -> General tab -> certificates ->details tab ->copy to file ->aparece un wizard y luego presionar next-> ahi seleccionar el formato DER encoded binary -> ponerle algun nombre significativo al certificado y luego finish

una vez que tengo el certificado en la pc, ahora que hago?
Yo luego de guardarlo en la pc, copie los certificados a un directorio cercano al root
una cosa asi c:\directorio

Luego de eso procederemos a instalar el certificado con el Keytool en el cacerts

Aqui esta el comando ejemplo para instalar el certificado

C:\Program Files\Java\jre6\lib\security>keytool -import -alias webc -file "C:\certificates\webc.cer"
-keystore "C:\Program Files\Java\jre6\lib\security\cacerts"

donde webc es el nombre significativo de este ejemplo pero puede ser el que cada uno quiera y webc.cer es el certificado que bajamos con el wsdl

una vez que le damos enter a ese comando se nos va a requerir la password del keystore, la cual por defecto es changeit

Enter keystore password: changeit
Owner: CN=ebosi.vzbi.com, OU=VBP Cert, O=Verizon Business, L=Boston, ST=MA, C=US
Issuer: CN=VBP Certificate Authority, OU=VBP CA, O=Verizon Business, L=Boston, ST=MA, C=US
Serial number: 49
Valid from: Mon Feb 22 17:03:19 GMT-03:00 2010 until: Tue May 22 17:03:19 GMT-03:00 2018
Certificate fingerprints:
MD5: CC:0B:73:44:67:74:85:06:F2:82:57:D9:BA:53:A1:C4
SHA1: A2:3E:2C:E9:EB:A8:71:14:2C:4E:D9:1D:7B:06:6B:DF:54:29:8F:F6
Trust this certificate? [no]: yes
Certificate was added to keystore

Espero que les haya servido, hasta la proxima!

2 comentarios:

mery dijo...

Me ha dado este error:

error de herramienta de claves: java.io.FileNotFoundException: C:\Program Files (x86)\Java\jre6\lib\security\cacerts (Acceso denegado)

Si alguien sabe como arreglarlo??
Gracias

Victor Indacochea Pincay dijo...

mery tienes que ejecutar el cmd como administrador para que no te de ese error