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.