Renovar el certificado de keycloak

Habia instalado keycloak con una imagen de docker y le puse un certificado hecho con certbot. El problema que ahora veo es que los certificados de cerbot solo tienen una vigencia de 3 meses, por lo tanto, unos dias antes de que expire hay que renovar el certificado y volver a pasarlo al contenedor de keycloak.

Bueno en este articulo voy a describir los pasos que realice para renovar y automatizar la renovación de los certificados de certbot.

Versiones

Esto utilizando las siguientes versiones.

  • Ubuntu server 22.04
  • Docker version 20.10.8, build 3967b7d
  • certbot 1.32.2
  • KEYCLOAK_VERSION=15.0.0

Procedimiento

  • Crea un nuevo certificado con certbot
$ sudo certbot certonly --manual -d keycloak.yourdomain.com
[sudo] contraseña para username: 
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certificate not yet due for renewal

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/keycloak.yourdomain.com.conf)

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate for keycloak.yourdomain.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/keycloak.yourdomain.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/keycloak.yourdomain.com/privkey.pem
This certificate expires on 2023-04-12.
These files will be updated when the certificate renews.

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • Deten el contenedor de keycloak
$ docker stop keycloak
keycloak
  • Borra el contenedor de keycloak, asegurate de tener:
    • Configurada la base de datos fuera de tu contenedor
    • El script de creación del contenedor con la configuración de las variables de sesión.
$ docker rm keycloak
keycloak
  • Vuelve a crear el contenedor con el script de creación que tenias.
docker run -it -d --name keycloak --net keycloak-network -p8080:8080 -p 8443:8443 -v /etc/letsencrypt/live/keycloak.yourdomain.com/fullchain.pem:/etc/x509/https/tls.crt -v /etc/letsencrypt/live/keycloak.yourdomain.com/privkey.pem:/etc/x509/https/tls.key -e KEYCLOAK_USER=administrador -e KEYCLOAK_PASSWORD=yourkeycloakpassword -e DB_VENDOR=mariadb -e DB_DATABASE=keycloak -e DB_USER=keycloak -e DB_PASSWORD=your-db-password jboss/keycloak
  • Asegurate de que la llave privada y la llave publica, el agente de docker tenga permisos para su ejecución.