Modificar el certificado TLS de Cyberwatch
Formato requerido para el certificado y la clave
El certificado y la clave deben estar en formato PEM.
La clave debe estar sin cifrar.
Este formato es solo una convención de nomenclatura; la extensión de los archivos del certificado y la clave no tiene un valor técnico real.
Esto indica que los archivos esperados están en formato texto, con el contenido del certificado codificado en base 64 entre las siguientes cadenas:
-----BEGIN CERTIFICATE-----
...certificado_codificado...
-----END CERTIFICATE-----
Con Docker Swarm
Copiar el nuevo certificado en el contenedor nginx:
docker cp monfichier.crt $(docker ps -f name=cbwonpremise_nginx -q):/etc/nginx/ssl/nginx.crt docker cp monfichier.key $(docker ps -f name=cbwonpremise_nginx -q):/etc/nginx/ssl/nginx.keyEl archivo
nginx.crtcontiene el certificado, seguido si es necesario de los certificados intermedios. No es necesario modificar los permisos de los archivos, ya que al iniciarse, Cyberwatch los asigna al usuario del contenedor nginx y restringe su acceso.(Recomendado) Activar el header HSTS:
Se recomienda activar el header HSTS para reforzar la seguridad de las conexiones forzando el uso del protocolo HTTPS.
Añadir la siguiente línea en el archivo
/etc/cyberwatch/containers.env:ENABLE_HSTS="true"Reiniciar Cyberwatch:
sudo cyberwatch restartVerificar los archivos vistos por el contenedor nginx:
sudo cyberwatch exec nginx ls -l /etc/nginx/ssltotal 8 -rw------- 1 nginx nginx 1274 Oct 6 09:22 nginx.crt -rw------- 1 nginx nginx 1705 Oct 6 09:22 nginx.key
El certificado emitido por Cyberwatch, utilizado por defecto, se renueva automáticamente al iniciarse antes de su expiración. En cambio, Cyberwatch nunca sustituye un certificado que no ha emitido: se muestra una advertencia al iniciarse cuando se acerca su fecha de expiración, y entonces es necesario instalar un nuevo certificado siguiendo este procedimiento.
Troubleshooting
En caso de que Cyberwatch no reinicie, es posible consultar los logs del contenedor nginx con el siguiente comando:
sudo cyberwatch logs nginx -f
Si ocurre un problema al añadir el nuevo certificado, debería aparecer un error en estos logs.
Una mala configuración del certificado puede provocar un crash del contenedor nginx. Como este contenedor debe estar iniciado para permitir la reconfiguración del certificado, primero es necesario volver a un certificado emitido por Cyberwatch:
Sustituir el certificado instalado por un certificado emitido por Cyberwatch:
sudo cyberwatch renew-certificates --force nginx-sslReiniciar Cyberwatch:
sudo cyberwatch restartConfigurar el certificado de nuevo, siguiendo el procedimiento completo descrito arriba
El comando cyberwatch renew-certificates está disponible a partir de la versión 5.32 de la base del orquestador.
Con Kubernetes
- Requisitos previos: haber lanzado al menos una vez Cyberwatch
- Sustituir los archivos
nginx.crtynginx.keyrespectivamente por el certificado y la clave privada asociada en la carpeta/var/lib/volumes/cyberwatch/ssl Reiniciar Cyberwatch:
sudo cyberwatch restart
Con Podman
Este procedimiento se aplica a partir de la versión 1.4 del orquestador Podman, que almacena el certificado presentado por la interfaz web en la carpeta /etc/cyberwatch/ssl.
Copiar el nuevo certificado así como la clave en la carpeta
/etc/cyberwatch/ssl, asignándolos al usuariocyberwatchque ejecuta los contenedores:sudo install -o cyberwatch -g cyberwatch -m 600 monfichier.crt /etc/cyberwatch/ssl/nginx.crt sudo install -o cyberwatch -g cyberwatch -m 600 monfichier.key /etc/cyberwatch/ssl/nginx.keyEl archivo
nginx.crtcontiene el certificado, seguido si es necesario de los certificados intermedios.(Recomendado) Activar el header HSTS pasando la variable
ENABLE_HSTSatrueen el archivo/etc/cyberwatch/containers.env:ENABLE_HSTS='true'Reiniciar Cyberwatch:
sudo cyberwatch restartVerificar el certificado presentado por la interfaz web, en el puerto
8443por defecto:openssl s_client -connect localhost:8443 </dev/null 2>/dev/null | openssl x509 -noout -subject -enddate
Troubleshooting con Podman
En caso de que Cyberwatch no reinicie, debería aparecer un error relacionado con el certificado en los logs del contenedor nginx:
sudo cyberwatch logs nginx -f
Para volver a un certificado autofirmado, eliminar el certificado y la clave y luego reiniciar Cyberwatch. El contenedor nginx genera entonces un nuevo certificado:
sudo rm /etc/cyberwatch/ssl/nginx.crt /etc/cyberwatch/ssl/nginx.key
sudo cyberwatch restart