Cómo generar un SSL Certificate Request (CSR) en Tomcat

Estos son los pasos para generar un CSR (SSL Certificate Request) en Tomcat. Este tutorial se basa en la creación de un nuevo keystore.

Lo primero es crear el keystore que almacenará el certificado y la private key. El comando a utilizar para todas las operaciones es keytool. Forzamos el tamaño de la private key a 2048 bits con el parámetro keysize, le indicamos que el algoritmo es RSA y que el alias para el certificado dentro del keystore es «tomcat»:

# keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 \
-keystore /usr/share/tomcat/conf/ssl/tomcat_keystore
Enter keystore password:  
Re-enter new password: 
What is your first and last name?
  [Unknown]:  www.rm-rf.es
What is the name of your organizational unit?
  [Unknown]:  IT
What is the name of your organization?
  [Unknown]:  Mi compañía
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]:  ES
Is CN=www.rm-rf.es, OU=IT, O=Mi compañía, L=Madrid, ST=Madrid, C=ES correct?
  [no]:  yes

Enter key password for 
	(RETURN if same as keystore password):  

Como podéis ver, solicita el password del keystore (lo utilizaremos para acceder a los contenidos del mismo), el Common Name para el certificado (first and last name, un poco ambiguo…), y el resto de datos de organización, empresa, ciudad, etc. Finalmente la clave para la key, que podemos seleccionar la misma que para el keystore.

Con esto ya tenemos el keystore creado y la private key con todos los datos. Podemos asegurarnos listando el contenido del keystore:

# keytool -list -keystore /usr/share/tomcat/conf/ssl/tomcat_keystore
Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

tomcat, 21-ago-2014, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 9C:B1:.......

Para generar el CSR a partir de esa información ejecutamos el siguiente comando:

# keytool -certreq -keyalg RSA -alias tomcat -file /usr/share/tomcat/conf/ssl/certreq.csr \
-keystore /usr/share/tomcat/conf/ssl/tomcat_keystore

Una vez ejecutado ya tendremos el fichero .csr que se envía a las empresas certificadoras para que emitan el certificado SSL.

# cat  /usr/share/tomcat/conf/ssl/certreq.csr
-----BEGIN NEW CERTIFICATE REQUEST-----
[...]
-----END NEW CERTIFICATE REQUEST-----