Skip to content

redmic-project/gateway-certificates-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Certificates Manager

Este servicio de encarga de crear y mantener actualizados los certificados SSL empleados por el entorno de REDMIC.

Descripción

Técnicamente, se trata de un envoltorio que hace uso de la imagen oficial de certbot para obtener y renovar certificados. Además, implementa una lógica de gestión, fija configuración concreta y añade persistencia.

Es capaz de renovar los certificados solo cuando sea necesario, y se comunica con el servidor web para actualizarle los certificados en uso si se produce la renovación. Cuando obtiene por primera vez o actualiza certificados, los expone como configuraciones secretas de Docker, para usarse en el servicio del servidor web. Para ello, elimina los valores anteriores (si los hubiese) y actualiza el servicio del servidor web con ellos. Las siguientes ejecuciones en las que no sea necesario renovar todavía, simplemente se informará de ello, ya que gracias a la persistencia de la configuración se puede comprobar localmente la validez de los certificados.

La programación de renovación se realiza en GitLab, con una tarea de CI/CD que se ejecuta semanalmente. Es importante haber desplegado antes el servicio, para luego poder relanzarlo todas las semanas.

También genera los parámetros Diffie-Hellman cuando no los tiene disponibles, para dejarlos a disposición del servidor web. Hay que tener paciencia porque es un proceso pesado.

Uso

Requiere la definición de las siguientes variables de entorno:

Variable Descripción Ejemplo
CERT_NAME Nombre identificativo del certificado. Es importante elegir un valor fijo para poder renovarlo posteriormente. redmic.es
DOMAIN_LIST Dominios para los que se obtiene el certificado. Se define como una lista separada por comas. redmic.es,www.redmic.es
EMAIL_LIST Direcciones de email utilizadas para obtener el certificado (y recibir notificaciones). Se define como una lista separada por comas. [email protected],[email protected]

También se pueden definir opcionalmente las siguientes variables de entorno:

Variable Descripción Valor por defecto
DH_NUMBITS Complejidad de los parámetros DH generados para el servidor web. Reducir el tamaño acelerará los cálculos. 2048
SERVER_SERVICE Nombre del servicio (Docker Swarm, <stack>_<service-name>) del servidor web. gateway_nginx-proxy-https
PUSHGATEWAY_HOST Dirección del servicio Pushgateway al que se enviarán las métricas Prometheus de monitorización. pushgateway:9091
DHPARAMS_VOL_NAME Nombre del volumen Docker donde se almacenan los parámetros DH generados, si no existen ya allí (se montará sobre /dhparams). dhparams-vol
CERTBOT_CONFIG_VOL_NAME Nombre del volumen Docker donde se almacena la configuración de certbot y los certificados (se montará sobre /etc/letsencrypt). certbot-config-vol
CERTBOT_LOGS_VOL_NAME Nombre del volumen donde se guardan los logs de certbot, por si hace falta consultarlos (se montará sobre /var/log/letsencrypt). certbot-logs-vol
ACME_VOL_NAME Nombre del volumen Docker donde almacenar los ficheros usados para verificar (responder a los challenges) el dominio a certificar. También debe ser montado por el servidor web, para que exponga los ficheros en la ruta /.well-known/acme-challenge/. No será necesario si la validación se realiza mediante registros DNS (aún no disponible). acme-vol

Métricas

Siempre que se ejecuta con éxito el servicio, se exponen métricas Prometheus para conocer el estado de los certificados y poder generar alertas si algo no ha ido bien.

Existen 2 métricas, etiquetadas con el nombre del certificado:

  • certificates_updated_date_seconds: Fecha en segundos de la última actualización del certificado.
  • certificates_valid_date_seconds: Fecha en segundos del último intento de actualización (necesario o no) del certificado.

About

[MIRROR] Renew SSL certificates automatically

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages