bg-tutorials

Cómo instalar un certificado SSL en Tomcat

En este tutorial, aprenderás cómo instalar un certificado SSL en Apache Tomcat usando la utilidad Java keytool, y luego configurarás el conector HTTPS en server.xml. Si aún no has generado tu CSR, la primera sección te muestra cómo hacerlo.

También grabamos un video que te guía a través de todo el proceso. Puedes ver el video, leer las instrucciones, o hacer ambas cosas. Puedes ver el video a continuación.

Generar un código CSR para Tomcat

CSR significa Certificate Signing Request (Solicitud de Firma de Certificado), un bloque de texto que contiene los datos actuales de tu dominio y organización. Todo comprador de un certificado SSL comercial debe enviar un CSR a la Autoridad de Certificación (el proveedor SSL) para pasar la validación y recibir el certificado. Si el CSR contiene datos incorrectos, la CA no lo firmará.

En Tomcat, el CSR se crea con keytool a partir de un almacén de claves (keystore) Java, y ese mismo keystore contiene la clave privada que reutilizarás durante la instalación. Tienes dos opciones:

Importante: lleva un registro del archivo keystore y el alias que usaste al generar el CSR. Más adelante importarás tu certificado firmado de vuelta a ese mismo alias, porque ahí es donde reside la clave privada correspondiente.

Después de que la Autoridad de Certificación valide tu solicitud y te envíe los archivos SSL, continúa con la instalación a continuación.

Instalar un certificado SSL en Tomcat

Una instalación en Tomcat tiene dos etapas: primero importas la cadena de certificados y tu certificado firmado al keystore que ya contiene tu clave privada, y luego configuras el conector HTTPS en server.xml para que use ese keystore.

Paso 1: Prepara tus archivos de certificado SSL

Tu Autoridad de Certificación envía los archivos por correo electrónico a la dirección que proporcionaste, generalmente como un archivo ZIP. Extráelo. Según la CA, los archivos llegan en uno de dos formatos:

  • PKCS#7: un único archivo .p7b (o .cer) que ya incluye tu certificado junto con los certificados raíz e intermedio.
  • PEM: archivos separados, típicamente un .crt para tu certificado de servidor más archivos individuales root.crt e intermediate.crt.

Sube los archivos extraídos al servidor, en el mismo directorio que el keystore desde el que generaste tu CSR (referido a continuación como example.jks). Identifica tu formato y sigue las instrucciones correspondientes.

¿Generaste el CSR en otro lugar, de modo que tu clave privada es un archivo separado en lugar de una entrada en example.jks? Omite keytool: convierte PEM a PKCS#12 para agrupar el certificado, la cadena y la clave en un solo .p12, y luego haz referencia a ese archivo en el Paso 3 con certificateKeystoreType=»PKCS12″.

Paso 2: Importa el certificado a tu keystore

Formato PKCS#7. Como un .p7b ya contiene la cadena completa, un único comando importa todo de una vez, en tu alias existente de clave privada:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

Reemplaza ssldragon por tu propio alias y example por los nombres de tus archivos. El alias debe ser aquel que ya contiene tu clave privada (el alias del paso del CSR). Cuando veas el mensaje Certificate reply was installed in keystore, la importación se realizó correctamente. Verifica el contenido del keystore con:

keytool -list -v -keystore example.jks

Busca una entrada cuyo tipo sea PrivateKeyEntry con una longitud de cadena de certificados mayor que 1. Eso confirma que el certificado firmado ya está adjunto a tu clave privada.

Formato PEM. Importa los certificados por separado, en orden de cadena: primero el raíz, luego los intermedios, y tu certificado de dominio al final. Importar la cadena primero permite que keytool construya una ruta de confianza completa antes de adjuntar la respuesta a tu clave. Importa el certificado raíz:

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

Luego importa el certificado intermedio:

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

Si tu CA proporciona varios certificados intermedios, importa cada uno bajo su propio alias de confianza, siguiendo el orden en que se firman entre sí (desde el raíz hacia abajo, hasta tu certificado de dominio). Por ejemplo, un certificado Sectigo PositiveSSL de Sectigo se distribuye con más de un intermedio, así que impórtalos en secuencia antes del certificado de dominio.

Finalmente, importa tu certificado principal (el emitido para tu dominio) en el alias existente de clave privada, el mismo alias que usaste al generar el CSR:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

Aquí, ssldragon debe ser tu alias existente de clave privada. Como ese alias ya tiene una clave, keytool trata esta importación como una respuesta de certificado y vincula el certificado firmado a la clave. Este es el paso que hace que HTTPS funcione.

Error crítico: no importes el certificado firmado bajo un alias completamente nuevo. Si el alias no tiene una clave privada existente, keytool almacena el certificado como una entrada de confianza independiente sin ninguna clave adjunta, y TLS fallará. Si no estás seguro de qué alias contiene tu clave, ejecuta keytool -list -v -keystore example.jks y usa el alias cuyo tipo sea PrivateKeyEntry.

Paso 3: Configura el conector HTTPS en server.xml

Con el certificado en tu keystore, dirige el conector HTTPS de Tomcat hacia él. El conector se define en server.xml, ubicado en la carpeta conf de tu instalación de Tomcat (por ejemplo $CATALINA_HOME/conf/server.xml). Abre el archivo en un editor de texto.

En las versiones actuales de Tomcat (9, 10 y 11), la forma recomendada anida un elemento SSLHostConfig, que a su vez contiene un elemento Certificate que hace referencia a tu keystore. Añade o actualiza el conector seguro para que se vea así:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: la ruta completa a tu archivo keystore.
  • certificateKeystorePassword: la contraseña del keystore.
  • certificateKeystoreType: JKS para un keystore .jks, o PKCS12 para un keystore .p12 / .pfx.
  • certificateKeyAlias: el alias que contiene tu clave privada y certificado firmado (aquí, ssldragon). Esto le indica a Tomcat qué entrada usar cuando el keystore contiene más de una.

Nota: el puerto 443 es el puerto HTTPS estándar utilizado arriba; los ejemplos propios de Tomcat usan por defecto el 8443, así que utiliza el que espere tu entorno. Si esta es tu primera configuración HTTPS, es posible que el conector seguro esté comentado en server.xml. Elimina los marcadores de comentario que lo rodean para que el conector esté activo, y asegúrate de que ningún otro conector ya esté vinculado al mismo puerto.

Forma antigua (Tomcat más antiguo). Las guías más antiguas colocan los detalles del keystore directamente en el conector como atributos keystoreFile y keystorePass. Ese estilo ha sido reemplazado por los elementos SSLHostConfig y Certificate mostrados arriba, que es la forma que se debe usar en las versiones compatibles de Tomcat.

Paso 4: Guarda server.xml y reinicia Tomcat

Guarda server.xml, luego reinicia Tomcat para que recargue la configuración. En Linux, usa los scripts incluidos:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Si Tomcat se ejecuta como un servicio, reinícialo a través de tu gestor de servicios (por ejemplo systemctl restart tomcat en Linux, o el panel de Servicios en Windows). Felicidades, tu certificado SSL ya está instalado en tu servidor Tomcat.

Prueba tu instalación SSL en Tomcat

Después de instalar el certificado, pequeños errores pueden pasar desapercibidos y afectar cómo los navegadores tratan tu sitio. Adquiere el hábito de verificar la instalación. Ejecuta nuestro SSL Checker para un escaneo instantáneo que revela problemas como un certificado intermedio faltante o una cadena no confiable.

Preguntas frecuentes

¿Por qué mi certificado SSL de Tomcat no funciona después de importarlo?

La causa habitual es importar el certificado firmado bajo un alias nuevo en lugar del alias que ya contiene tu clave privada. keytool entonces lo almacena como una entrada de certificado de confianza sin clave, por lo que Tomcat no puede completar un handshake TLS. Vuelve a importar la respuesta firmada en el alias existente de clave privada (el de tu CSR). Confirma que funcionó ejecutando keytool -list -v -keystore example.jks y verificando que el alias aparezca como PrivateKeyEntry con una cadena de más de un certificado.

¿Debo importar primero la cadena de certificados o mi certificado de dominio?

Importa primero la cadena. Añade el certificado raíz y los intermedios como entradas de confianza, en orden, y luego importa tu certificado de dominio en el alias de clave privada al final. Esto permite que keytool construya una ruta de confianza completa antes de adjuntar la respuesta a tu clave. Con un archivo PKCS#7 (.p7b) la cadena ya viene incluida, así que una sola importación resuelve todo.

¿Dónde está el archivo de configuración SSL de Tomcat?

El conector HTTPS se define en server.xml, en el directorio conf de tu instalación de Tomcat (por ejemplo $CATALINA_HOME/conf/server.xml). En las versiones actuales de Tomcat, el keystore se referencia mediante un elemento anidado SSLHostConfig y Certificate en lugar de directamente en el conector.

¿Puedo usar un keystore PKCS12 en lugar de JKS en Tomcat?

Sí. Tomcat admite ambos. Establece certificateKeystoreType como PKCS12 para un keystore .p12 o .pfx, o JKS para un keystore .jks, y dirige certificateKeystoreFile al archivo correspondiente. PKCS12 es el formato de keystore estándar y portable, por lo que es una buena opción predeterminada para nuevos keystores.

¿Qué puerto usa Tomcat para HTTPS?

La configuración de ejemplo de Tomcat usa el puerto 8443 para el conector seguro. Para servir HTTPS en el puerto estándar que los navegadores usan por defecto, establece el port del conector en 443 y asegúrate de que ningún otro conector o servicio ya lo esté usando.

¿Cómo reinicio Tomcat después de cambiar la configuración SSL?

Ejecuta los scripts incluidos $CATALINA_HOME/bin/shutdown.sh seguido de $CATALINA_HOME/bin/startup.sh, o reinicia el servicio de Tomcat a través de tu gestor de servicios (por ejemplo systemctl restart tomcat en Linux, o el panel de Servicios en Windows). Es necesario reiniciar para que los cambios en server.xml surtan efecto.

Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.

Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10

Una imagen detallada de un dragón en vuelo
Escrito por

Redactor de contenidos experimentado especializado en Certificados SSL. Transformar temas complejos de ciberseguridad en contenido claro y atractivo. Contribuir a mejorar la seguridad digital a través de narrativas impactantes.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.