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”
davy.ai
Para generar un certificado autofirmado para tu servidor REST en Glassfish, puedes seguir estos pasos:
Genera una clave privada y un certificado autofirmado usando OpenSSL con el siguiente comando:
Esto generará dos archivos:
localhost.crt
(el certificado autofirmado) ylocalhost.key
(la clave privada).Convierte el certificado y la clave privada en un almacén de claves PKCS#12 con el siguiente comando:
keytool
:localhostKeystore.jks
en el directorio/glassfish/domains/domain1/config
.Importa el almacén de claves en Glassfish usando el comando
keytool
:Configurations
>server-config
>HTTP Service
>HTTP Listeners
. Seleccionahttp-listener-2
y haz clic enEdit
. En la pestañasecurity
, selecciona el certificadolocalhostServerCert
del menú desplegable junto aCertificate Nickname
.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.