Modificar el certificat TLS de Cyberwatch

Format requerit per al certificat i la clau

El certificat i la clau han d’estar en format PEM.

La clau no ha d’estar xifrada.

Aquest format és només una convenció de noms; l’extensió dels fitxers del certificat i de la clau no té cap valor tècnic real.

Indica que els fitxers esperats estan en format de text, amb el contingut del certificat codificat en base 64 entre les cadenes següents:

-----BEGIN CERTIFICATE-----
...certificat_encodé...
-----END CERTIFICATE-----

Amb Docker Swarm

  1. Copieu el certificat nou al contenidor 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.key
    

    El fitxer nginx.crt conté el certificat, seguit, si cal, dels certificats intermedis. No cal modificar els permisos dels fitxers perquè, en iniciar-se, Cyberwatch els assigna a l’usuari del contenidor nginx i en limita l’accés.

  2. (Recomanat) Activeu la capçalera HSTS:

    Es recomana activar la capçalera HSTS per reforçar la seguretat de les connexions, ja que força l’ús del protocol HTTPS.

    Afegiu la línia següent al fitxer /etc/cyberwatch/containers.env:

    ENABLE_HSTS="true"
    
  3. Reinicieu Cyberwatch:

    sudo cyberwatch restart
    
  4. Comproveu els fitxers que veu el contenidor nginx:

    sudo cyberwatch exec nginx ls -l /etc/nginx/ssl
    
    total 8
    -rw-------    1 nginx    nginx         1274 Oct  6 09:22 nginx.crt
    -rw-------    1 nginx    nginx         1705 Oct  6 09:22 nginx.key
    

El certificat emès per Cyberwatch, que s’utilitza per defecte, es renova automàticament en iniciar-se abans que caduqui. En canvi, Cyberwatch no substitueix mai un certificat que no ha emès: quan s’acosta la data de caducitat, es mostra un avís en iniciar-se i cal instal·lar un certificat nou seguint aquest procediment.

Resolució de problemes

Si Cyberwatch no es reinicia, podeu consultar els registres del contenidor nginx amb l’ordre següent:

sudo cyberwatch logs nginx -f

Si s’ha produït un problema en afegir el certificat nou, hauria d’aparèixer un error en aquests registres.

Una configuració incorrecta del certificat pot provocar una fallada del contenidor nginx. Com que aquest contenidor ha d’estar iniciat per poder reconfigurar el certificat, primer cal tornar a un certificat emès per Cyberwatch:

  1. Substituïu el certificat instal·lat per un certificat emès per Cyberwatch:

    sudo cyberwatch renew-certificates --force nginx-ssl
    
  2. Reinicieu Cyberwatch:

    sudo cyberwatch restart
    
  3. Torneu a configurar el certificat seguint el procediment complet descrit més amunt

L’ordre cyberwatch renew-certificates està disponible a partir de la versió 5.32 de la plataforma base.

Amb Kubernetes

  1. Requisit previ: haver iniciat Cyberwatch almenys una vegada
  2. Substituïu els fitxers nginx.crt i nginx.key pel certificat i per la clau privada associada, respectivament, a la carpeta /var/lib/volumes/cyberwatch/ssl
  3. Reinicieu Cyberwatch:

    sudo cyberwatch restart
    

Amb Podman

Aquest procediment s’aplica a partir de la versió 1.4 de la plataforma base Podman, que emmagatzema el certificat que presenta la interfície web a la carpeta /etc/cyberwatch/ssl.

  1. Copieu el certificat nou i la clau a la carpeta /etc/cyberwatch/ssl i assigneu-los a l’usuari cyberwatch que executa els contenidors:

    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.key
    

    El fitxer nginx.crt conté el certificat, seguit, si cal, dels certificats intermedis.

  2. (Recomanat) Activeu la capçalera HSTS posant la variable ENABLE_HSTS a true al fitxer /etc/cyberwatch/containers.env:

    ENABLE_HSTS='true'
    
  3. Reinicieu Cyberwatch:

    sudo cyberwatch restart
    
  4. Comproveu el certificat que presenta la interfície web, al port 8443 per defecte:

    openssl s_client -connect localhost:8443 </dev/null 2>/dev/null | openssl x509 -noout -subject -enddate
    

Resolució de problemes amb Podman

Si Cyberwatch no es reinicia, hauria d’aparèixer un error relacionat amb el certificat als registres del contenidor nginx:

sudo cyberwatch logs nginx -f

Per tornar a un certificat autosignat, suprimiu el certificat i la clau i, a continuació, reinicieu Cyberwatch. Llavors, el contenidor nginx genera un certificat nou:

sudo rm /etc/cyberwatch/ssl/nginx.crt /etc/cyberwatch/ssl/nginx.key
sudo cyberwatch restart