Modifier le certificat TLS de Cyberwatch

Format requis pour le certificat et la clé

Le certificat et la clé doivent être au format PEM.

La clé doit être non chiffrée.

Ce format n’est qu’une convention de nommage, l’extension des fichiers du certificat et de la clé n’ont pas de valeur technique réelle.

Cela indique que les fichiers attendus sont au format texte, avec le contenu du certificat encodés en base 64 entre les chaînes suivantes :

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

Avec Docker Swarm

  1. Copier le nouveau certificat dans le conteneur 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
    
  2. Valider la présence des fichiers :

    sudo cyberwatch exec nginx ls -l /etc/nginx/ssl
    
    total 12
    -rw-r--r-- 1 root root  424 Aug 20 09:22 dhparams.pem
    -rw-r--r-- 1 1000 1000 1274 Aug 10 12:20 nginx.crt
    -rw-r--r-- 1 1000 1000 1705 Aug 10 12:20 nginx.key
    
  3. (Optionnel) Activer le header HSTS :

    Ajouter la ligne suivante dans le fichier /etc/cyberwatch/containers.env :

    ENABLE_HSTS="true"
    
  4. Redémarrer Cyberwatch :

    sudo cyberwatch restart
    

Troubleshooting

Dans le cas où Cyberwatch ne redémarre pas, il est possible de consulter les logs du conteneur nginx avec la commande suivante :

sudo cyberwatch logs nginx -f

Dans le cas où un problème est survenu lors de l’ajout du nouveau certificat, une erreur devrait remonter dans ces logs.

Une mauvaise configuration du certificat peut provoquer un crash du conteneur nginx. Ce conteneur devant être démarré pour permettre la reconfiguration du certificat ; lorsque ce type d’erreur se produit, il est nécessaire de suivre la procédure suivante afin de pouvoir configurer le certificat à nouveau :

  1. Supprimer le volume nginx :

     sudo docker volume rm cbwonpremise_data_ssl
    
  2. Redémarrer l’application Cyberwatch, qui en l’absence du volume permettra à nginx de générer un nouveau certificat auto-signé et de relancer le conteneur :

     sudo cyberwatch restart
    
  3. Configuration du certificat à nouveau, en suivant la procédure complète décrite ci-dessus.

Avec Kubernetes

  1. Prérequis : avoir lancé au moins une fois Cyberwatch.
  2. Remplacer les fichiers nginx.crt et nginx.key respectivement par le certificat et la clé privée associée dans le dossier /var/lib/volumes/cyberwatch/ssl.
  3. Redémarrer Cyberwatch :

    sudo cyberwatch restart