bg-tutorials

Cómo generar un CSR en GlassFish

Este tutorial te muestra cómo generar un CSR (Certificate Signing Request) para GlassFish (ahora Eclipse GlassFish) usando la utilidad Java keytool.

GlassFish resulta poco habitual en un aspecto útil: una instalación nueva ya incluye un keystore (keystore.p12 en Eclipse GlassFish 7.1 y versiones posteriores, o keystore.jks en versiones anteriores) y una entrada de certificado predeterminada bajo el alias s1as. Puedes generar el CSR directamente a partir de esa clave existente, o sustituirla por una clave nueva bajo el mismo alias. Sea cual sea la opción, se reutiliza el mismo alias al importar el certificado firmado, de modo que la clave, el CSR y el certificado emitido conviven en un mismo lugar.

Lo que necesitarás

  • Una instalación de GlassFish (o Eclipse GlassFish) en funcionamiento. El keystore predeterminado se encuentra en el directorio de configuración del dominio, por ejemplo glassfish/domains/domain1/config/keystore.p12 en Eclipse GlassFish 7.1 y versiones posteriores, o keystore.jks en versiones anteriores.
  • Una instalación de Java para que el comando keytool esté disponible. GlassFish incluye un JDK, por lo que keytool normalmente ya está en la ruta del sistema. Confírmalo con keytool -help.
  • Acceso a la shell o terminal del servidor GlassFish. La clave privada debe permanecer en este servidor.
  • El nombre de dominio completamente calificado (FQDN) exacto que deseas proteger, por ejemplo www.tudominio.com, además de cualquier nombre de host adicional para el campo SAN.
  • Los datos legales de tu organización (país, estado, localidad, nombre de la organización) para el nombre distintivo (Distinguished Name) del CSR.
  • La contraseña maestra de GlassFish para el dominio. El valor predeterminado de fábrica es changeit; cámbialo en sistemas de producción con asadmin change-master-password.

Dos formas de generar el CSR

Si ya generaste tu CSR, salta directamente a enviar el CSR y luego a instalar tu certificado SSL en GlassFish.

Existen dos flujos comunes de keytool en GlassFish. Elige el que se ajuste a tu situación:

  • Opción A: Generar el CSR a partir de la clave s1as existente (recomendado). Un dominio nuevo de GlassFish ya tiene una clave privada bajo el alias s1as dentro del keystore predeterminado (keystore.p12 en 7.1+, keystore.jks en versiones anteriores). La ruta más rápida y de menor riesgo es dejar esa clave tal cual y simplemente exportar un CSR a partir de ella. Ve directamente a la Opción A.
  • Opción B: Sustituir la clave s1as predeterminada por una nueva y luego generar el CSR. Usa esta opción si quieres un tamaño de clave y un DN conocidos y actuales, o si sospechas que la clave predeterminada ha sido utilizada o expuesta. Ve directamente a la Opción B.

Sea cual sea la opción que elijas, el alias debe seguir siendo s1as (o, si lo cambias, también deberás actualizar domain.xml para que coincida). El listener HTTPS de GlassFish busca el certificado por alias, así que un alias que no coincida hace que GlassFish no pueda encontrar la clave y TLS no se inicie.

Opción A: Generar el CSR a partir de la clave s1as existente

Paso 1: Cambia al directorio de configuración de GlassFish

Abre una terminal y accede al directorio que contiene el keystore de tu dominio. En una instalación predeterminada, esa es la carpeta config de domain1:

cd /opt/glassfish7/glassfish/domains/domain1/config

Ajusta la ruta para que coincida con el lugar donde instalaste GlassFish (las versiones antiguas de GlassFish 4 anidan la instalación bajo una carpeta principal glassfish4/; Eclipse GlassFish 6, 7 y 8 normalmente se instalan bajo glassfish7/, glassfish8/, o similar). Si creaste tu propio dominio, sustituye domain1 por el nombre de ese dominio. Ejecuta ls *.p12 *.jks en este directorio para confirmar el nombre del archivo del keystore: en Eclipse GlassFish 7.1 y versiones posteriores verás keystore.p12; en versiones anteriores verás keystore.jks. Sustituye ese nombre de archivo en cualquier lugar donde los comandos siguientes muestren keystore.jks.

Paso 2: Confirma que existe la entrada s1as

Lista el contenido del keystore y comprueba que s1as está presente y que es un PrivateKeyEntry:

keytool -list -v -keystore keystore.jks -alias s1as

Introduce la contraseña del keystore (por defecto de fábrica changeit; en un servidor de producción debería coincidir con la contraseña maestra de tu dominio). La salida debe incluir la línea Entry type: PrivateKeyEntry. Si en cambio obtienes el mensaje Alias <s1as> does not exist, pasa a la Opción B y crea una entrada nueva.

Paso 3: Exporta el CSR con SAN

Los navegadores y clientes TLS modernos validan los certificados frente a la extensión Subject Alternative Name (SAN), no solo frente al Common Name. Solicita los SAN directamente en el CSR para que la CA los incluya en el certificado emitido:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

Qué significan las opciones:

  • -alias s1as: el alias de certificado existente de GlassFish. La clave privada bajo este alias firma la solicitud.
  • -keystore keystore.jks: el archivo de keystore predeterminado de GlassFish. Eclipse GlassFish 7.1 y versiones posteriores incluyen un keystore PKCS12 llamado keystore.p12; las versiones anteriores usan un keystore JKS llamado keystore.jks. Usa el nombre de archivo que realmente exista en este directorio. El comando en sí es el mismo en ambos casos; keytool detecta el formato.
  • -file glassfish.csr: el nombre de archivo de salida para el CSR. Elige el nombre que prefieras.
  • -ext san=dns:…: la extensión Subject Alternative Name. Enumera cada nombre de host que el certificado debe cubrir, incluyendo tanto el dominio raíz (yourdomain.com) como el subdominio www. Añade más entradas separadas por comas, por ejemplo dns:api.yourdomain.com.

keytool solicita la contraseña del keystore y escribe el CSR en glassfish.csr en el directorio actual. El Subject (nombre distintivo) del CSR se toma de lo que esté almacenado en la entrada s1as; en una instalación nueva de GlassFish se trata del certificado autofirmado generado automáticamente, por lo que el DN no coincidirá con el de tu empresa. La mayoría de las CA solo verifican el Common Name y la lista de SAN y te permiten sobrescribir el resto del DN en el formulario de pedido, pero si necesitas un CSR cuyo DN ya incluya los datos legales de tu empresa, usa la Opción B.

Opción B: Sustituir la clave s1as predeterminada por una nueva

Usa esta opción cuando quieras control total sobre el tamaño de la clave y el DN, o cuando prefieras no reutilizar la clave generada de fábrica. El flujo es: eliminar la entrada s1as predeterminada, crear una nueva clave bajo el mismo alias y, después, exportar el CSR. Mantener el alias como s1as significa que no tendrás que tocar domain.xml después.

Paso 1: Haz una copia de seguridad del keystore

Antes de eliminar nada, copia el keystore actual para poder revertir los cambios si es necesario. Desde el directorio config del dominio:

cp keystore.jks keystore.jks.bak

Paso 2: Elimina la entrada s1as predeterminada

keytool -delete -alias s1as -keystore keystore.jks

Introduce la contraseña del keystore cuando se te solicite.

Paso 3: Crea una nueva clave privada bajo el mismo alias

Genera una nueva clave RSA de 2048 bits bajo el alias s1as y proporciona el DN en línea para que el comando no sea interactivo:

keytool -genkeypair 
  -alias s1as 
  -keyalg RSA -keysize 2048 
  -keystore keystore.jks 
  -dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US" 
  -validity 825

Qué significan las opciones:

  • -alias s1as: reutiliza el alias predeterminado de GlassFish para que domain.xml no necesite cambios.
  • -keyalg RSA -keysize 2048: una clave RSA de 2048 bits es el mínimo público actual. Para claves nuevas que planees mantener durante varios años, 3072 bits es una mejora razonable. La mayoría de las CA públicas también aceptan ECDSA (-keyalg EC -groupname secp256r1) para obtener una clave más pequeña y rápida.
  • -keystore keystore.jks: el keystore predeterminado de GlassFish. Sustitúyelo por keystore.p12 en Eclipse GlassFish 7.1 y versiones posteriores. keytool mantiene el formato de keystore existente (JKS en instalaciones antiguas, PKCS12 en 7.1+); ambos funcionan bien aquí.
  • -dname «CN=…»: los campos del nombre distintivo (Distinguished Name) escritos en el CSR. Usa los datos exactos y legales de tu empresa:
  • CN: el FQDN exacto que estás protegiendo, por ejemplo www.tudominio.com, o un comodín como *.tudominio.com. No introduzcas el nombre de una persona, a pesar de la redacción del mensaje de keytool en el modo interactivo.
  • O: el nombre legal completo de tu empresa.
  • L: el nombre completo de la ciudad (no lo abrevies).
  • ST: el nombre completo del estado o provincia (no uses un código de dos letras).
  • C: el código de país ISO de dos letras, por ejemplo US, GB, DE.
  • OU (Unidad Organizativa): este campo ya no lo emiten las CA públicas. Omítelo del DN.

keytool solicita la contraseña del keystore y la contraseña de la clave. En un dominio de GlassFish, la contraseña del keystore, la contraseña de la clave y la contraseña maestra del dominio deben coincidir todas; de lo contrario, GlassFish no podrá desbloquear la clave al arrancar y HTTPS fallará. Pulsa Intro en el mensaje de la contraseña de la clave para reutilizar la contraseña del keystore.

Paso 4: Exporta el CSR con SAN

El mismo comando que en la Opción A, ejecutado sobre tu nueva clave:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

Introduce la contraseña del keystore. keytool escribe el CSR en glassfish.csr en el directorio actual.

Crítico: mantén el alias como s1as

El error más común con keytool en GlassFish es cambiar el alias en algún punto del proceso, ya sea al generar la clave o al importar el certificado firmado. Aparecen dos modos de fallo:

  • Alias incorrecto en la clave. El listener HTTPS de GlassFish está configurado para usar s1as en domain.xml. Si generas una clave bajo un alias distinto, GlassFish no podrá encontrarla y el listener recurrirá al certificado autofirmado predeterminado (o no se iniciará). Si realmente deseas usar un alias diferente, deberás actualizar todas las referencias a s1as en domain.xml para que coincidan.
  • Alias incorrecto en la importación. Cuando la CA devuelve tu certificado firmado, debes importarlo de nuevo en el mismo alias que contiene la clave privada. Importarlo bajo un alias completamente nuevo almacena el certificado como una entrada de confianza independiente sin ninguna clave privada asociada, y TLS no funcionará.

Anota estos tres valores antes de cerrar la terminal:

  • El alias (predeterminado s1as; consérvalo).
  • La ruta del archivo de keystore, por ejemplo glassfish/domains/domain1/config/keystore.p12 (o keystore.jks en versiones anteriores).
  • La contraseña del keystore (que debe ser igual a la contraseña maestra del dominio).

Verifica el CSR antes de enviarlo

Detecta errores tipográficos en el DN o SAN faltantes antes de que la CA los valide. Imprime el CSR con keytool:

keytool -printcertreq -file glassfish.csr

O bien, si tienes OpenSSL instalado, úsalo en su lugar:

openssl req -noout -text -in glassfish.csr

Confirma tres cosas en la salida: que el Subject muestra tu DN exacto, que el Subject Alternative Name incluye cada nombre de host que necesitas, y que el tamaño de la Public-Key coincide con lo que solicitaste (RSA de 2048 bits, o lo que hayas elegido). También puedes pegar el CSR en nuestro CSR Decoder para hacer la misma comprobación desde el navegador.

Envía el CSR a tu Autoridad de Certificación

Abre glassfish.csr en cualquier editor de texto. El archivo es texto plano, comienza con —–BEGIN CERTIFICATE REQUEST—– y termina con —–END CERTIFICATE REQUEST—–. Copia el bloque completo, incluidas esas líneas de encabezado y pie, y pégalo en el campo de CSR durante el proceso de compra con tu CA. En Windows, usa Ctrl + A y luego Ctrl + C para capturar todo el texto; en macOS, usa Cmd + A y luego Cmd + C.

Después de que la CA valide tu solicitud y emita el certificado, continúa con cómo instalar tu certificado SSL en GlassFish. Importarás la cadena de la CA como confiable, luego importarás el certificado firmado de nuevo en el alias s1as dentro del mismo archivo de keystore (keystore.p12 en 7.1+, keystore.jks en versiones anteriores) y, por último, apuntarás el listener HTTPS a ese alias.

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.