es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear un certificado autofirmado para localhost e importarlo en Glassfish.

Estoy desarrollando un servidor REST que se ejecuta con Jersey en Glassfish, y quiero hacer que se ejecute en HTTPS en localhost.

He encontrado muchos tutoriales para generar un certificado de AC, otros para generar archivos .cer / .crt / .key / .csr / …, otros para generar un almacén de claves jks.

Pero no responden a mi pregunta (muy básica): ¿cómo generar un certificado autofirmado y usarlo en mi aplicación que se ejecuta en Glassfish, en localhost? Desde cero hasta la integración para un uso real, sin tener ningún archivo crt, jks u otro.

(Para información, uso Linux)

Gracias

EDIT: Finalmente he creado un certificado con los siguientes comandos

openssl req -x509 -out localhost.crt -keyout localhost.key \
-newkey rsa:2048 -nodes -sha256 \
-subj ‘/CN=localhost’ -extensions EXT -config <( \
printf “[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth”)

openssl pkcs12 -export -name localhostServerCert -in localhost.crt -inkey localhost.key -out localhostP12Keystore.p12

keytool -importkeystore -destkeystore localhostKeystore.jks -srckeystore localhostP12Keystore.p12 -srcstoretype pkcs12 -alias localhostServerCert

copiar localhostKeystore.jks en /glassfish/domains/domain1/config

keytool -importkeystore -srckeystore localhostKeystore.jks -destkeystore keystore.jks

Y he modificado http-listener-2 en la consola de administración con el alias del certificado localhostServerCert, pero obtuve una página de error en https://localhost:8181 (ERR_CONNECTION_REFUSED)

EDIT 2: Creo que debe haber un problema con el certificado, ya que “openssl s_client -showcerts -connect localhost:8181” devuelve “no peer certificate available”, “No client certificate CA names sent”

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para generar un certificado autofirmado para tu servidor REST en Glassfish, puedes seguir estos pasos:

    1. Abre tu terminal y navega hasta el directorio donde deseas almacenar tus archivos de certificado.
    2. Genera una clave privada y un certificado autofirmado usando OpenSSL con el siguiente comando:

      openssl req -x509 -out localhost.crt -keyout localhost.key -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -extensions EXT -config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
      

      Esto generará dos archivos: localhost.crt (el certificado autofirmado) y localhost.key (la clave privada).

    3. Convierte el certificado y la clave privada en un almacén de claves PKCS#12 con el siguiente comando:

      openssl pkcs12 -export -name localhostServerCert -in localhost.crt -inkey localhost.key -out localhostP12Keystore.p12
      

    4. Convierte el almacén de claves PKCS#12 en un almacén de claves JKS usando el comando keytool:
      keytool -importkeystore -destkeystore localhostKeystore.jks -srckeystore localhostP12Keystore.p12 -srcstoretype pkcs12 -alias localhostServerCert
      
    5. Copia el archivo localhostKeystore.jks en el directorio /glassfish/domains/domain1/config.
    6. Importa el almacén de claves en Glassfish usando el comando keytool:

      keytool -importkeystore -srckeystore localhostKeystore.jks -destkeystore keystore.jks
      

    7. En la consola de administración de Glassfish, ve a Configurations > server-config > HTTP Service > HTTP Listeners. Selecciona http-listener-2 y haz clic en Edit. En la pestaña security, selecciona el certificado localhostServerCert del menú desplegable junto a Certificate Nickname.
    8. Reinicia Glassfish.

    Después de completar estos pasos, tu servidor REST debería estar funcionando en HTTPS en localhost utilizando el certificado autofirmado que generaste. Si encuentras algún error, asegúrate de revisar los registros del servidor para obtener más información.

Comments are closed.