Una guía paso a paso para configurar el certificado SSL/TLS en el servidor Tomcat.
Una de las tareas esenciales para asegurar Tomcat es configurar el certificado SSL, para que la aplicación web sea accesible a través de HTTPS.
Hay muchas formas de conseguirlo.
- Puede terminar SSL en un equilibrador de carga
- Implementar SSL a nivel de CDN
- Utilizar servidores web como Apache, Nginx, etc. delante e implementar SSL allí
Sin embargo, si no está utilizando ninguno de los anteriores o lo está utilizando como front-end o necesita implementar SSL directamente en Tomcat, entonces lo siguiente le ayudará.
En este artículo, haremos lo siguiente.
- Generar CSR (Solicitud de firma de certificado)
- Importar certificado en un archivo keystore
- Habilitar SSL en Tomcat
- Configurar el protocolo TLS
- Cambiar Tomcat para que escuche en el puerto 443
- Compruebe la vulnerabilidad SSL de Tomcat
Empecemos…
Preparación para el certificado SSL/TLS
El primer paso sería generar un CSR y conseguir que lo firme la autoridad de certificación. Utilizaremos la utilidad keytool
para gestionar los certificados.
- Inicie sesión en el servidor Tomcat
- Vaya a la ruta de instalación de tomcat
- Cree una carpeta llamada ssl
- Ejecute el comando para crear un almacén de claves
keytool -genkey -alias nombredeldominio -keyalg RSA -keysize 2048 -keystore nombrearchivo.jks
Hay dos variables en los comandos anteriores que puede que desee cambiar.
- Alias – mejor mantenerlo significativo para que en el futuro pueda reconocerlo rápidamente. Yo prefiero mantenerlo como un nombre de dominio.
- Filename – de nuevo, es bueno mantener el nombre de dominio.
Ej:
[root@geekflare ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
Introduzca la contraseña del almacén de claves:
Vuelva a introducir la nueva contraseña:
¿Cuál es su nombre y apellidos?
[Desconocido]: bloggerflare.com
¿Cuál es el nombre de su unidad organizativa?
[Desconocido]: Blogging
¿Cuál es el nombre de su organización?
[Desconocido]: Geek Flare
¿Cuál es el nombre de su ciudad o localidad?
[Desconocido]:
¿Cuál es el nombre de su Estado o Provincia?
[Desconocido]:
¿Cuál es el código de país de dos letras de esta unidad?
[Desconocido]:
¿Es correcto CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=desconocido, ST=desconocido, C=desconocido?
[no]: sí
Introduzca la contraseña clave para <bloggerflare>
(REGRESAR si es la misma que la contraseña del almacén de claves):
[root@geekflare ssl]#
Preste atención a la pregunta sobre el nombre y el apellido. Creo que esto es un poco engañoso. No es su nombre, sino el nombre del dominio que desea asegurar.
Una vez que proporcione toda la información, se creará un archivo keystore en un directorio de trabajo actual.
Lo siguiente sería generar una nueva CSR con el almacén de claves recién creado con el siguiente comando.
keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks
Esto creará una CSR que deberá enviar a la autoridad de certificación para que la firme. Si está jugando, puede considerar utilizar un proveedor de certificados GRATUITO o bien optar por uno premium.
Conseguí el certificado firmado y procederé a importarlo al almacén de claves con el siguiente comando.
- Importar certificado raíz es dado por el proveedor
keytool -importcert -alias root -file root -keystore bloggerflare.jks
- Importar certificado intermedio
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks
Nota: si no importa el certificado raíz y el intermedio, no podrá importar el certificado de dominio al almacén de claves. Si tiene más de un intermedio, deberá importarlos todos.
- Importar certificado de dominio
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare
y, obtendrá una confirmación de que se ha instalado.
La respuesta del certificado se instaló en el almacén de claves
Genial, así que el keystore de certificados ya está listo. Pasemos al siguiente paso.
Si es nuevo en SSL y está interesado en saber más entonces inscríbase en este curso online – Operaciones SSL/TLS.
Habilitar SSL en Tomcat
Suponiendo que todavía está conectado al servidor Tomcat, vaya a la carpeta conf
- Haga una copia de seguridad del archivo server.xml
- Vaya a la sección
<Connector port="8080" protocol="HTTP/1.1"
y añada una línea
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
- No olvide cambiar el nombre del archivo keystore y la contraseña por los suyos
- Reinicie tomcat y debería ver que Tomcat es accesible sobre HTTPS
¡Genial!
Puerto HTTPS estándar
¿Por qué?
Bueno, si se fija en la captura de pantalla de arriba, estoy accediendo a Tomcat a través de 8080 con https que no es estándar y algunas razones más.
- No quiere pedir a los usuarios que utilicen un puerto personalizado
- El navegador dará una advertencia ya que el certificado se emite sobre el nombre de dominio sin el puerto
Así que la idea es hacer que Tomcat escuche en el puerto 443 para que sea accesible sólo sobre https:// sin el número de puerto.
Para ello, edite server.xml con su editor favorito
- Vaya a
<Connector port="8080"
- Cambie el puerto de 8080 a 443
- Debería quedar así
<Conector port="443" protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
redirectPort="8443" />
- Reinicie Tomcat y acceda a su aplicación con https sin ningún número de puerto
Impresionante, ¡es un éxito!
Prueba de vulnerabilidad SSL/TLS
Por último, realizaremos una prueba para asegurarnos de que no es vulnerable a las amenazas en línea.
Existen muchas herramientas en línea de las que ya hablé aquí, y aquí utilizaré SSL Labs.
- Vaya a SSL Labs e introduzca la URL para comenzar la prueba
Y es VERDE – calificación A.
Sin embargo, siempre es una buena idea desplazarse por el informe y ver si encuentra alguna vulnerabilidad y solucionarla.
Así que eso ha sido todo por hoy.
Espero que esto le ayude a conocer el procedimiento de asegurar Tomcat con certificado SSL/TLS. Si está interesado en aprender más entonces le recomiendo encarecidamente este curso.