Habiendo generado un petición CSR desde openssl instalar el certificado SSL en el servidor de aplicaciones tomcat no es directo. Vamos a ver como conseguirlo:
Primero de todo deberemos generar un fichero contenedor de los certificados intermedio mediante openssl. Suponemos que disponemos:
- cert.pem: Certificado que nos envía nuestra entidad certificadora
- privkey.pem: Clave privada que hemos generado anteriormente para hacer la petición de firmado (CSR)
- intermediate.pem: Certificado de la CA intermedia, también nos lo dará nuestra entidad certificadora
A continuación ejecutamos openssl para generar un fichero en formato PKCS12 que contendrá tanto las claves públicas como las privadas:
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out fichero.intermedio.pk12 \ -name server -CAfile intermediate.pem -caname root
Este fichero va protegido por una clave simétrica, al generarlo nos pedirá que definamos la contraseña:
Enter Export Password: Verifying - Enter Export Password:
El fichero resultante, de acuerdo con el comando openssl será fichero.intermedio.pk12. A continuación deberemos usar la herramienta keytool presente en el jdk de java. Podemos usar la variable $JAVA_HOME para referirnos al binario: $JAVA_HOME/bin/keytool:
/usr/java/latest/bin/keytool -importkeystore -srckeystore fichero.intermedio.pk12 -srcstoretype PKCS12 -alias server
Mediante este comando transformamos el fichero PKCS12 en el formato keystore. Primero nos pedirá la contraseña del fichero resultante (keystore):
Enter destination keystore password: Re-enter new password:
A continuación nos pide la contraseña del fichero origen (PKCS12):
Enter source keystore password:
Esto generará un fichero .keystore en la $HOME con los certificados para que los use tomcat. En el caso que queramos definir un fichero en concreto deberemos usar la opción -destkeystore de keytool.
A continuación deberemos habilitar el Connector usando la opción SSLEnabled=”true”:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLSv1" keystorePass="systemadmin.es" keyAlias="server" />
Las opciones principales son:
- keyAlias: Indicamos el alias que hemos usando en keytool para identificar el certificado. En dicho contenedor podríamos incluir más de un certificado
- keystorePass: Deberemos indicar la contraseña del contenedor keystore que hemos generado con keytool
- keystoreFile: En el caso que no queramos usar el fichero ~/.keystore (por defecto) deberemos usar este parámetro para indicar el keystore que queramos
Tags: <a href="http://systemadmin.es/tag/openssl" title="openSSL" rel="tag">openSSL</a>, <a href="http://systemadmin.es/tag/tomcat" title="Tomcat" rel="tag">Tomcat</a><br>
Via http://systemadmin.es/2012/01/instalacion-de-un-certificado-ssl-en-tomcat-keystore
