¿Cómo generar un certificado self-signed usando java keytool para tomcat?

Tengo una máquina virtual Linux, corriendo sobre Red Hat 7 Developer edition, esta la puedes conseguir directamente desde el sitio de RedHat: https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/

Sobre esta máquna virtual he instalado Oracle 18c como motor de base de datos e instalado una aplicación web que corre sobre un servidor web Tomcat, hace algún tiempo había generado un certificado pero por error la generé con un tiempo de vigencia muy breve:

Certificado original generado.

El certificado fué válido solo por aproximadamente 3 meses.

En esta entrada voy a detallar los pasos para re-generar un certificado Self-Sign Certificate. Cabe aclarar que esto en realidad no es seguro, ya que el certificado es generado por nosotros mismos y no por una autoridad certificadora autorizada pero, yo lo genero porque para las demos que debo realizar a clientes no luce bien tener un sitio de esta forma:

Google marcará nuestro sitio como no seguro.

Generando el certificado (self-sign certificate)

Listar certificados:

Listar certificados instalados en el keystore:

keytool -list -v -keystore /home/axiom/tomcat2/keystore/axiom.jks

El keystore que estoy usando es: /home/axiom/tomcat2/keystore/axiom.jks

Veremos una salida similar a la siguiente:

Eliminar certificado

El proceso que vamos a realizar es eliminar el certificado y generar uno nuevo, el nombre del certificado que vamos a eliminar es axiom.

Antes de ejecutar cualquier acción contra el keystore se debe bajar el servicio del servidor web Tomcat.

./shutdown.sh

Una vez detenido tomcat podemos borrar el certificado antiguo. Esto lo hacemos con el siguiente comando:

keytool -delete -alias axiom -keystore /home/axiom/tomcat2/keystore/axiom.jks

En mi caso el certificado a borrar tiene el nombre de axiom, luego va a preguntarnos por la contraseña del keystore, la contraseña por defecto es changeit.

Generar un nuevo certificado

Una vez eliminado el certificado anterior procedemos a generar un nuevo con el siguiente comando:

keytool -genkey -alias axiom -keyalg RSA -keystore /home/axiom/tomcat2/keystore/axiom.jks -validity 720 -ext san=dns:cv10vm.axiomsl.com

Es importante incluir la opción -ext san=dns…
Esto porque es la URL que usará nuestro sitio local en tomcat y esta URL debe coincidir con la del certificado.

Se nos pedirán algunos datos:

Con esto queda generado el certificado, si listamos los certificados nuevamente veremos que nuestro certificado aparece en la lista con la nueva fecha:

Verificar nuevo certificado

Procedemos a levantar tomcat con el siguiente comando:

./start.sh

Al iniciar tomcat vamos a encontrar que el sitio aun no aparece como seguro, esto es porque debemos instalar el certificado en nuestro sistema operativo.

Para solucionar esto se debe exportar el certificado:

Se debe hacer clic a la izquierda de la URL,en «No Seguro». Al realizar esto obtendremos la siguiente ventana:

Vamos a la pestaña Details y presionamos copy to file, esto nos llevará a la siguiente ventana:

Al presionar next iremos a la siguiente ventana, escogemos la opción que se muestra en pantalla y presionamos next.


Presionamos Next y escogemos una ruta donde guardaremos el certificado.

Importando el certificado en nuestro sistema operativo

Debemos hacer click derecho sobre el certificado guardado en el paso anterior y hacer clic en Instalar Certificado, luego seguimos el estilo tradiconal de windows para instalar, haciendo click en next.

En el siguiente paso debemos seleccionar lo siguiente:

Luego se nos mostrará una advertencia, la cual debemos aceptar para nuestros fines.

Hecho esto veremos que nuestro sitio ya aparece como un sitio «seguro».

Todo este proceso es realizado en un ambiente de desarrollo, este proceso no es recomendado para entornos productivos. Personalmente es un ambiente que uso para demos únicamente y que es usado exclusivamente por mi.

Deja un comentario