Cómo configurar HTTPS en Tomcat 7

Lo primero es comprar un dominio y hacer que apunte al servidor (no indicados los pasos aquí).

Crear el certificado con Certbot.

Puede que certbot de el error ImportError: No module named cryptography.hazmat.bindings.openssl.binding.

Copiamos el .pfx generado a la carpeta de Tomcat y le damos permisos para que Tomcat lo pueda leer:

Configuramos Tomcat para que use el certificado SSL, en /etc/tomcat7/server.xml

Configuramos el sistema para que las peticiones a los puertos 80 y 443 los sirva el servidor escuchando en los puertos 8080 y8443. Yo lo pongo en /etc/init.d/tomcat7 en los comandos ‘start’ y ‘stop’:

Configurar Tomcat para que sólo acepte conexiones HTTPS en /etc/tomcat7/web.xml . Añadir dentro del contenido del tag <web-app> :

Configurar el conector HTTP en  /etc/tomcat7/server.xml  para que redireccione al puerto 443 (no al 8443), de manera que todas las peticiones HTTP serán redireccionadas a HTTPS:

Resumen de la creación del certificado

Este es el script para crear el certificado:

Configurar la renovación automática del certificado

Añadimos la siguiente línea a /etc/crontab  para que se ejecute cada 2 meses (dado que el certificado dura 3):

O también se puede ejecutar a mano como root  cuando nos llegue el correo recordatorio de que el certificado va a expirar: