Configurar SSL en Wildfly 8/9/10

Estándar

Esta configuración es para WildFly 8, pero funciona con las versiones 9 y 10. Tomar en cuenta que se debe tener las utilidades openssl y keytool instaladas y de preferencia en el path, para ejecutar los comandos descritos.

Bueno, se tiene el desafío de configurar servidores WildFly/JBoss para utilizar HTTPS. Se debe partir generando los siguientes archivos y certificados SSL que se detallan a continuación:

midominio.com.csr (Certificate Signing Request) y midominio.com.key (Llave Privada para nuestro Certificado SSL)
Este es el primer paso, se debe generar esta «Solicitud de Firma de Certificado» desde el servidor midominio.com donde se desea instalar el certificado SSL. Es recomendable utilizar como minimo una llave de 2048 bits.

Los archivos .csr y .key se generan con el siguiente comando:

Esto nos devolverá el siguiente mensaje en la pantalla:

Luego debemos proveer la información referente a nuestra organización (midominio.com)

Ahora si estamos listos para comprar nuestro certificado SSL. Un certificado estándar probablemente sera todo lo que se necesite para obtener seguridad básica. Hay distintos sitios que proveen certificados SSL a buen precio, como GoDaddy.com o SSLs.com.
Luego de comprar el certificado el siguiente paso es activarlo con el proveedor, el mismo solicitará copiar el contenido del archivo .csr creado con anterioridad.

Una vez emitido el certificado SSL en base a la información proporcionada, lo descargamos y descomprimimos
Los archivos que necesitamos del paquete son:
ssl_certificate.crt (Certificado SSL de midominio.com) y IntermediateCA.crt (Certificado del Emisor o Proveedor del certificate de midominio.com) junto con el archivo midominio.com.key generado con anterioridad.

Ahora debemos crear un archivo .jks para importarlo en el keystore. Este es un proceso de 3 pasos: primero creamos un archivo pkcs12 (con extensión .p12) a partir del certificado SSL, luego lo importamos en un archivo keystore y por ultimo tambien importamos el IntermediateCA.crt en el keystore.

Paso 1

Paso 2

* Si desean hacer la prueba también pueden generarse un certificado local e importarlo al keystore, siguiendo los pasos en este artículo: Generar un certificado local e importarlo en el keystore para habilitar SSL en WildFly.

Paso 3

Convertir el IntermediateCA.crt a .pfx

Importar el certificado .pfx a nuestro keystore.

Luego adicionar la siguiente entrada dentro del archivo standalone.xml en la sección security-realms.

Luego de tener importados los certificados, agregamos la siguiente entrada dentro del archivo standalone.xml en la sección server name.

Si deseamos redireccionar todas las peticiones http hacia https, entonces modificamos la linea adicionando redirect-socket=»https»

No olvidemos tambien verificar que nuestro puerto SSL este correctamente definido dentro la sección socket-binding-group name=»standard-sockets»

Adicionar en el archivo web.xml (Esto requiere volver a empaquetar el .war y volverlo a desplegar en WildFly)

Reiniciamos WildFly, volvemos a desplegar el .war y hacemos la prueba ingresando a midominio.com ya sea desde https o http en caso tenemos activa la redirección.

Saludos.

16 comentarios en “Configurar SSL en Wildfly 8/9/10

  1. Hola,
    Buen post, en mi caso estoy batallando por que no uso web.xml, sino que uso la configuracion con classes java.

    alguien sabra como se configura la parte …. en una clase java?

    • Hola Raffenio,
      ¿Podrias elaborar un poco más tu requerimiento? ¿A que te refieres con configurar SSL en clases java? ¿Al uso de HttpsURLConnection? Podrias pegar un poco de tu codigo fuente aqui para darle una mirada y quizás te pueda ayudar. Este post es acerca de habilitar SSL en tu sitio local, para que quienes lo visiten puedan utilizar https:// que es mas que nada un tema de infraestructura.
      Saludos

  2. Christian

    Hola gracias por compartir tu conocimiento, una consulta en el caso de querer renovar un certificado que ya caduco, deberia volver a seguir los pasos que mencionas?, seria necesario volver a generarlo o existe alguna forma solo de copiar el nuevo certificado sin ejecutar los pasos que indicas en este manual.

  3. iván

    Creo que deberías mejorar el tutorial, está incompleto y no funcionan todos los comandos por falta de archivos que no mencionas de donde salieron

  4. enrique

    Hola buenas,

    Tengo algunas dudas.

    Desde la empresa de certificados me han mandado el key y el CSR original.

    No se como ponerlo en el servidor.

    Y solo me han enviado el IntermediateCA.crt el ssl_certificate.crt lo genero yo?

    Saludos y gracias.

  5. Jonathan

    Hola Marcelo, estoy siguiendo tus pasos pero aun no me funciona, hay alguna otra manera de comunicarme contigo. te explico:

    La idea es configurar el certificado SSL en un servidor widlfly 15.
    el certificado fue adquirido de godaddy.

    los pasos que he realizado son los siguientes:

    1.-Me ubico en la carpeta donde se encuentra el archivo de configuración del wildfly.

    2.-Creo el almacén de claves con lo siguiente:

    keytool -keysize 2048 -genkey – alias -keyalg RSA -keystore

    ingreso los datos de la empresa.

    3.-Generar archivo CSR
    keytool -certreq -keyalg RSA -alias -file -keystore

    4.-Copiar el contenido del archivo generado en el paso anterior en la plataforma certificadora, ej godaddy

    5.-Una vez se haya realizado el proceso de certificación, descargar los archivos correspondientes y copiarlos en la ubicación donde se creo el paso 1.

    6.-Importar el(los) certificados al almacén de certificados
    keytool -import -alias -trustcacerts -file -keystore

    7.-Luego de crear el certificado es necesario crear un área de seguridad para Undertow (el servidor Web incluido en WildFly).
    Para esto, hay que localizar el archivo de configuración de WildFly (standalone-full.xml)
    -Ubicarse en la etiqueta «ApplicationRealms»

    <keystore path= relative-to=»jboss.server.config.dir» keystore-password= alias= key-password= />

    Luego ubicarse en undertow:8
    y reemplazar las lineas:

    Reiniciar Wildfly.

    he realizado estos pasos sacando información de diversas partes y aun asi no he tenido exito. Quisiera que por favor me ayudaras a encontrar la solución. Muchas gracias por la información publicada.

  6. dani

    Buenos días.

    primero de todo gracias por la guia, pero no entiendo el último paso:

    A que te refieres empaquetar y desplegar de nuevo?

    Es necesario para modificar tal fichero web.xml empaquetar y desempaquetar?

    Donde se encuentra ese fichero?

    Gracias

    • Hola Dani,
      El archivo web.xml se utiliza para configurar algunos aspectos de la aplicación web de Java, por tanto si realizas cambios en el, deberás empaquetar y desplegar de nuevo, por ejemplo si estas usando maven en tu proyecto desde tu entorno de desarrollo primero debes ejecutar un clean, luego un package y recién un deploy del .war al wildfly.

      El archivo por lo general se encuentra dentro de la carpeta /target/WEB-INF/web.xml en tu proyecto de desarrollo.

      Espero haberte podido ayudar.

      Saludos.

  7. Piller

    Hola. Muchas gracias por la guía.
    Hace un año la había ejecutado con éxito pero el certificado venció, ahora seguí todos los pasos y a pesar de que no recibo errores, la página sigue cargando el certificado anterior, por lo que dice que está expirado.

    ¿Qué debo hacer para eliminar del todo el certificado anterior?

    Muchas gracias.

    • Hola Piller, probaste cargar la pagina desde una sesión de incognito? quizá el anterior certificado aún está en caché si lo abres desde la sesión de navegador que siempre utilizas. Si estas utilizando Chrome, podrías intentar abrir la pestaña Seguridad, que forma parte de las Herramientas del Programador (dentro del menú Ver => Opciones para Desarrolladores).
      Debería salirte el certificado que la página tiene instalado ver: https://imgur.com/a/qB5cdGd
      Dale una mirada ahi y verifica que el certificado es el correcto.

      Saludos.

Responder a Raffenio Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.

*