Al publicar un servidor Tomcat en Internet es recomendable permitir sólo HTTPS y acceder a él mediante un certificado digital firmado por una CA.
El proceso para activar SSL en Tomcat se divide en dos partes: 1/ crear un keystore funcional y 2/ configurar los conectores y aplicaciones para usar SSL. En esta primera entrada, de una serie de dos, veremos la parte acerca del keystore.
Las claves que Tomcat usará para las transacciones SSL se almacenan en un fichero protegido por contraseña llamado "keystore". El formato de este fichero es el estándar de Java JKS ("Java KeyStore") y es creado por la utilidad keytool que incluye el JDK. Para crearlo podemos hacerlo de dos formas:
- importando una clave existente:
keytool -import -alias prueba -file certificado.cer -keystore mi_keystore.jks -storepass changeit
- o creando un nuevo keystore desde 0:
keytool -genkey -alias prueba -keyalg RSA -keysize 2048 -keystore mi_keystore.jks
Enter keystore password:
What is your first and last name?
[Unknown]: www.prueba.com
What is the name of your organizational unit?
[Unknown]: IT
What is the name of your organization?
[Unknown]: COMPANIA
What is the name of your City or Locality?
[Unknown]: Madrid
What is the name of your State or Province?
[Unknown]: Madrid
What is the two-letter country code for this unit?
[Unknown]: SP
Is CN=www.prueba.com, OU=IT, O=COMPANIA, L=Madrid, ST=Madrid, C=SP correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password):
Una vez que tengamos preparado el keystore, el siguiente paso será crear el fichero CSR (Certificate Signing Request) que enviaremos a la CA de turno para que nos devuelva el certificado definitivo, que es el que presentaremos a terceros durante el handshake SSL. El comando es:
keytool -certreq -keyalg RSA -alias prueba -file certreq.csr -keystore mi_keystore.jks
Después de que la CA nos genere y envíe el certificado (tras previo pago si no tenemos SANs/wildcard) procederemos a instalarlo, aunque previamente tendremos que importar su certificado raíz para respetar la "cadena de confianza" SSL:
keytool -import -alias prueba -keystore mi_keystore.jks -trustcacerts -file root_certificate
Y finalmente añadimos el certificado:
keytool -import -alias prueba -keystore mi_keystore.jks -file certificado.cer
o en formato P7B que incluye el certificado intermedio:
keytool -import -trustcacerts -alias prueba -file certificado.p7b -keystore mi_keystore.jks
Nota: Asegúrate de usar el mismo alias cuando importes el certificado como el que uses cuando generes el CSR. Si desconoces el alias, puedes verificarlo utilizando un comando como este:
keytool -list -v -keystore [archivo_keystore.jks]
El proceso para activar SSL en Tomcat se divide en dos partes: 1/ crear un keystore funcional y 2/ configurar los conectores y aplicaciones para usar SSL. En esta primera entrada, de una serie de dos, veremos la parte acerca del keystore.
Las claves que Tomcat usará para las transacciones SSL se almacenan en un fichero protegido por contraseña llamado "keystore". El formato de este fichero es el estándar de Java JKS ("Java KeyStore") y es creado por la utilidad keytool que incluye el JDK. Para crearlo podemos hacerlo de dos formas:
- importando una clave existente:
keytool -import -alias prueba -file certificado.cer -keystore mi_keystore.jks -storepass changeit
- o creando un nuevo keystore desde 0:
keytool -genkey -alias prueba -keyalg RSA -keysize 2048 -keystore mi_keystore.jks
Enter keystore password:
What is your first and last name?
[Unknown]: www.prueba.com
What is the name of your organizational unit?
[Unknown]: IT
What is the name of your organization?
[Unknown]: COMPANIA
What is the name of your City or Locality?
[Unknown]: Madrid
What is the name of your State or Province?
[Unknown]: Madrid
What is the two-letter country code for this unit?
[Unknown]: SP
Is CN=www.prueba.com, OU=IT, O=COMPANIA, L=Madrid, ST=Madrid, C=SP correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password):
Una vez que tengamos preparado el keystore, el siguiente paso será crear el fichero CSR (Certificate Signing Request) que enviaremos a la CA de turno para que nos devuelva el certificado definitivo, que es el que presentaremos a terceros durante el handshake SSL. El comando es:
keytool -certreq -keyalg RSA -alias prueba -file certreq.csr -keystore mi_keystore.jks
Después de que la CA nos genere y envíe el certificado (tras previo pago si no tenemos SANs/wildcard) procederemos a instalarlo, aunque previamente tendremos que importar su certificado raíz para respetar la "cadena de confianza" SSL:
keytool -import -alias prueba -keystore mi_keystore.jks -trustcacerts -file root_certificate
Y finalmente añadimos el certificado:
keytool -import -alias prueba -keystore mi_keystore.jks -file certificado.cer
o en formato P7B que incluye el certificado intermedio:
keytool -import -trustcacerts -alias prueba -file certificado.p7b -keystore mi_keystore.jks
Nota: Asegúrate de usar el mismo alias cuando importes el certificado como el que uses cuando generes el CSR. Si desconoces el alias, puedes verificarlo utilizando un comando como este:
keytool -list -v -keystore [archivo_keystore.jks]
Muy util, Gracias
ResponderEliminarDisculpa! pero si ya tengo los archivos cert ( crt) y mi llave creadapor que lo hice en un nginx y quedo en Ok, como puedo ocupar la misma key y los mismos certificados ?? solo importando la key y mis certificados??
ResponderEliminar