Modificare il certificato TLS di Cyberwatch
Formato richiesto per il certificato e la chiave
Il certificato e la chiave devono essere in formato PEM.
La chiave non deve essere cifrata.
Questo formato è solo una convenzione di denominazione: l’estensione dei file del certificato e della chiave non ha un reale valore tecnico.
Indica che i file previsti sono in formato testo, con il contenuto del certificato codificato in base 64 tra le stringhe seguenti:
-----BEGIN CERTIFICATE-----
...certificat_encodé...
-----END CERTIFICATE-----
Con Docker Swarm
Copiare il nuovo certificato nel container 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.keyIl file
nginx.crtcontiene il certificato, seguito se necessario dai certificati intermedi. Non è necessario modificare i permessi dei file: all’avvio, Cyberwatch li assegna all’utente del container nginx e ne limita l’accesso.(Consigliato) Attivare l’header HSTS:
Si consiglia di attivare l’header HSTS per rafforzare la sicurezza delle connessioni, imponendo l’utilizzo del protocollo HTTPS.
Aggiungere la riga seguente nel file
/etc/cyberwatch/containers.env:ENABLE_HSTS="true"Riavviare Cyberwatch:
sudo cyberwatch restartVerificare i file visti dal container 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
Il certificato emesso da Cyberwatch, utilizzato per impostazione predefinita, viene rinnovato automaticamente all’avvio prima della scadenza. Cyberwatch, invece, non sostituisce mai un certificato che non ha emesso: all’avvicinarsi della data di scadenza viene visualizzato un avviso all’avvio, ed è quindi necessario installare un nuovo certificato seguendo questa procedura.
Troubleshooting
Nel caso in cui Cyberwatch non si riavvii, è possibile consultare i log del container nginx con il comando seguente:
sudo cyberwatch logs nginx -f
Se si è verificato un problema durante l’aggiunta del nuovo certificato, in questi log dovrebbe comparire un errore.
Una configurazione errata del certificato può provocare il crash del container nginx. Poiché questo container deve essere avviato per consentire la riconfigurazione del certificato, occorre prima tornare a un certificato emesso da Cyberwatch:
Sostituire il certificato installato con un certificato emesso da Cyberwatch:
sudo cyberwatch renew-certificates --force nginx-sslRiavviare Cyberwatch:
sudo cyberwatch restartConfigurare nuovamente il certificato, seguendo la procedura completa descritta sopra
Il comando cyberwatch renew-certificates è disponibile a partire dalla versione 5.32 della piattaforma di base.
Con Kubernetes
- Prerequisito: aver avviato Cyberwatch almeno una volta
- Sostituire i file
nginx.crtenginx.keyrispettivamente con il certificato e la chiave privata associata nella directory/var/lib/volumes/cyberwatch/ssl Riavviare Cyberwatch:
sudo cyberwatch restart
Con Podman
Questa procedura si applica a partire dalla versione 1.4 della piattaforma di base Podman, che memorizza il certificato presentato dall’interfaccia web nella directory /etc/cyberwatch/ssl.
Copiare il nuovo certificato e la chiave nella directory
/etc/cyberwatch/ssl, assegnandoli all’utentecyberwatchche esegue i container: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.keyIl file
nginx.crtcontiene il certificato, seguito se necessario dai certificati intermedi.(Consigliato) Attivare l’header HSTS impostando la variabile
ENABLE_HSTSsutruenel file/etc/cyberwatch/containers.env:ENABLE_HSTS='true'Riavviare Cyberwatch:
sudo cyberwatch restartVerificare il certificato presentato dall’interfaccia web, sulla porta
8443per impostazione predefinita:openssl s_client -connect localhost:8443 </dev/null 2>/dev/null | openssl x509 -noout -subject -enddate
Troubleshooting con Podman
Nel caso in cui Cyberwatch non si riavvii, nei log del container nginx dovrebbe comparire un errore relativo al certificato:
sudo cyberwatch logs nginx -f
Per tornare a un certificato autofirmato, eliminare il certificato e la chiave, quindi riavviare Cyberwatch. Il container nginx genera allora un nuovo certificato:
sudo rm /etc/cyberwatch/ssl/nginx.crt /etc/cyberwatch/ssl/nginx.key
sudo cyberwatch restart