Consejos para la instalación de Apache Tomcat en Windows

Recientemente estuve trabajando en un Servidor Windows 2016 que tenía instalado un servicio web de “Apache Tomcat 6.0” para la instalación de un Certificado SSL.

En este tipo de trabajos es necesario generar bien el Keystore, que es un contenedor de llaves y certificados de seguridad. Si usamos el terminal con OPENSSL el procedimiento puede ser complicado si no conoces bien los parámetros o comandos.

La herramienta que uso para entornos Windows es KeyStore Explorer, pueden encontrar su web y enlaces de descarga aquí.

Esta herramienta te resultará mucho más fácil que pelearte con la consola de Linux.

Otro detalle a tener en cuenta, con Apache Tomcat sobre Windows, es la creación de su conector. Para ello tendrás que editar el archivo “server.xml” que se encuentra en la ruta “$RUTA_BASE\conf\server.xml” y usar la siguiente estructura:

<Connector
	   port="443"
           protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="C:\Tomcat 6.0\conf\SSL\keystore.jks" keystorePass="clavedelkestore"
           clientAuth="false" sslProtocol="TLS"/>

Para este ejemplo “$RUTA_BASE” es “C:\Tomcat 6.0\“, claro que puede variar dependiendo lo que tu elijas.

Cada vez que agregues, modifiques y/o elimines algún detalle en “server.xml” será necesario reiniciar el servicio.

En caso presentes errores de sintaxis o de servicio, es esencial que revices los LOG del servidor. La ruta que almacena los LOG puede estar detallado en los parámetros de configuración del servidor Apache Tomcat.

Un error que a mi se me presentó a pesar que el conector estaba creado correctamente, consistía en que estaba usando el puerto por defecto 8443 y este ya era usado por otro servicio web en el servidor:

abr 29, 2022 11:43:29 PM org.apache.catalina.core.StandardService start
GRAVE: Failed to start connector [Connector[HTTP/1.1-8443]]
LifecycleException:  service.getName(): "Catalina";  Falló el arranque del manejador de protocolo: java.lang.Exception: Ligado de conector falló: [730048] Solo se permite un uso de cada dirección de socket (protocolo/dirección de red/puerto)

Así que cambié el puerto al 443 y el certificado cargó sin inconvenientes.

Asegurate siempre que a nivel de Red y Reglas de Firewall se esté permitiendo la conexión. Así mismo si el servicio está publicado en internet, asegurate que se esté permitiendo la conexión por el puerto que usarás.

Otro error común es cargar la web usando la IP privada o pública, recordemos que el certificado SSL que generamos o compramos está asociado a un nombre de dominio, así que cuando validen su certificado no usen la IP ya o cargará el certificado o saldrá alguna alerta del navegador.

Si están usando el puerto 443, no es necesario que especifiquen el puerto al final del dominio como: “https//:www.midominio.com:443“, ya que el navegador de manera predeterminada ya realizará las consultas por ese puerto.

Pero si usan un puerto distinto, si será necesario que lo especifiquen.

Bien, estos consejos me hubieran servidor a mi cuando me enfrenté por primera vez a este tipo de trabajos, así que los publico para que le pueda servir a quien lo necesite.