Let’s Encrypt es un servicio provisto por el Internet Security Research Group (ISRG) que brinda certificados SSL gratuitos a cualquiera. Su meta es hacer que todos los sitios web empleen HTTPS (SSL/TLS).

Pues bien, dado que es gratuito, en este artículo le mostraremos como emplear certificados de Let’s Encrypt en Oracle WebLogic 12c.

Instalación

Para empezar debemos descargar el cliente adecuado para nuestras necesidades, en mi caso seleccione CertBot.

Dado que CertBot no tiene soporte directo para WebLogic, una vez que lo instalamos debemos hacer uso del comando certonly

certbot certonly --standalone -d demo.flecharoja.com

Este comando obtiene un certificado para demo.flecharoja.com usando el webserver standalone que trae incluido certbot. Algo importante es que debes detener tu webserver para hacer el proceso. En nuestro caso, no tenemos ningún webserver atendiendo el dominio demo.flecharoja.com; por lo cual podemos continuar.

Antes de proseguir, hay algunas condiciones que debemos cumplir para que Let’s Encrypt valide que efectivamente tienes el control del dominio sobre el cual vas a obtener el certificado:

  • El nombre del dominio debe estar definido en un DNS y ser accesible desde Internet. En nuestro caso: demo.flecharoja.com
  • Debe existir una regla en tu firewall para permitir el tráfico entrante en el puerto 443.

Una vez que ejecutemos el comando previo; debemos tener una respuesta similar a esta:

[[email protected] ~]# certbot certonly --standalone -d demo.flecharoja.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for demo.flecharoja.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/demo.flecharoja.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/demo.flecharoja.com/privkey.pem
   Your cert will expire on 2018-03-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Key Store

Ahora, debemos crear un KeyStore para usarlo en WebLogic

  • Convertimos el certificado de openSSL a PKCS12
openssl pkcs12 -export -in /etc/letsencrypt/live/demo.flecharoja.com/fullchain.pem -inkey /etc/letsencrypt/live/demo.flecharoja.com/privkey.pem -out cert_and_key.p12 -name demo -CAfile /etc/letsencrypt/live/demo.flecharoja.com/chain.pem -caname root -password pass:changeit
  • Convertimos el PKCS12 al formato de keystore (que llamamos letsencrypt.jks)
keytool -importkeystore -destkeystore letsencrypt.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias demo -srcstorepass changeit -deststorepass changeit -destkeypass changeit
  • Importamos la cadena al certificado
keytool -import -noprompt -trustcacerts -alias root -file /etc/letsencrypt/live/ms.flecharoja.com/chain.pem -keystore letsencrypt.jks -srcstorepass changeit -deststorepass changeit -destkeypass changeit

WebLogic

Debemos entrar a la consola del servidor que esta en http://HOST:7001/console, de ahi navegamos a:

  • Environment -> Servers
  • Damos click a nuestro servidor
  • Y vamos al tab llamado Keystores.

Ahí, damos click en la opción Change y seleccionamos la opción Custom Identity and Custom Trust y guardar.

Luego debemos brindar los datos ahi indicados; como se muestra en la siguiente imagen y guardarlo.

Ahora vamos a

  • Environment -> Servers
  • Damos click a nuestro servidor
  • Y vamos al tab llamado SSL.

Ahi, debemos indicar el alias que usamos antes (demo en nuestro ejemplo) y digitar la clave que definimos (changeit en el ejemplo)

Aplicamos todos los cambios y si entramos por HTTPS por el puerto que tengamos configurado (por default el 7002 en WL 12c), veremos como usa nuestro nuevo certificado.

Conclusión

Integrar Let’s Encrypt con WebLogic 12c resulta un proceso muy simple y sin ningún costo económico.

Referencias

Autor

Gerardo Arroyo Arce

Chief Technology Officer.

  • Ingeniero en Software. ITCR.
  • Master en Computación en Informática. UCR.
  • Oracle Certified Expert, JEE 6 Web Services Developer.
  • Oracle Certified Professional, Java SE 7 Programmer.
  • Oracle WebLogic Server 12c Certified Implementation Specialist.

Flecha Roja Technologies, 2017.