jueves, 27 de noviembre de 2008

HOWTO: Importar un certificado servidor de Apache en un almacén JKS

[Offtopic: Esta entrada no habla sobre rendimiento]

Si tenemos un servidor Apache configurado para atender por SSL con su certificado servidor y su clave privada, y queremos utilizar el mismo certificado servidor en una aplicación Java, ¿cómo hacerlo?

Usos: por ejemplo si queremos eliminar Apache como proxy inverso y que nuestro motor de servlets (Glassfish, Tomcat o lo que sea) sea el frontal web directamente, o si queremos utilizar el mismo certificado que tenemos en el Apache para otros propósitos como por ejemplo en un servidor FTPS hecho en Java (como Apache Mina) o cualquier otro servicio paralelo.

Para ello lo más sencillo es utilizar un PKCS#12 pivote, que luego podremos eliminar.

Comandos:

$ openssl pkcs12 -export -in <certificado.cert> -inkey <claveprivada.key> -out <pkcs12.p12>
$ keytool -importkeystore -srckeystore <pkcs12.p12> -srcstoretype PKCS12 -destkeystore <almacen.jks> -deststoretype JKS

Obviamente, reemplazar <certificado.cert>, <claveprivada.key>, <pkcs12.p12> y <almacen.jks> por los nombres adecuados (ficheros origen utilizados por nuestro Apache, y JKS destino que se utilizará por nuestra aplicación Java).

Nota: la opción -importkeystore sólo es válida a partir de Java 6. En JDKs antiguos se utiliza "-import -pkcs12" (creo, pero tendría que tirar de archivo...)

No hay comentarios: