Skip to main content

Certificat

L'installation du certificat nécessite d'avoir:

  • un certificat SSL signé par un organisme reconnu.
  • une clé privée (.pem)
  • un certificat "fullchain" (concaténation entre certificat + certificat intermédiaire)

lets encrypt

Obtenir le certificat

Pour obtenir un certificat de manière gratuite, nous allons utiliser let's encrypt.

sudo systemctl stop nginx
sudo certbot certonly --standalone -d votredomaine.com
sudo systemctl start nginx

Nous avons maintenant les certificats nécessaires:

  • Clé privée : /etc/letsencrypt/live/votredomaine.com/privkey.pem
  • Certificat fullchain : /etc/letsencrypt/live/votredomaine.com/fullchain.pem

Ajouter www-data au groupe ssl-cert (ce groupe a accès aux certificats Let's Encrypt)

sudo usermod -aG ssl-cert www-data

Donner les bonnes permissions aux certificats

sudo chown -R root:ssl-cert /etc/letsencrypt/live /etc/letsencrypt/archive
sudo chmod -R 750 /etc/letsencrypt/live /etc/letsencrypt/archive

Changer les permissions des fichiers

sudo chmod 640 /etc/letsencrypt/live/votredomaine.com/privkey.pem
sudo chmod 640 /etc/letsencrypt/live/votredomaine.com/fullchain.pem

Mettre à jour la configuration Nginx

sudo nano /etc/nginx/sites-available/toriphone
#exemple de configuration
server {
listen 443 ;
listen [::]:443 ;
server_name votredomaine.com;

access_log /var/log/nginx/wazo.access.log;
error_log /var/log/nginx/wazo.error.log;
root /var/www/html;

include /etc/nginx/locations/https-enabled/*;

gzip off; # gzipping SSL encripted data is a waste of time
ssl on;
fastcgi_param HTTPS on;
ssl_certificate /etc/letsencrypt/live/votredomaine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votredomaine.com/privkey.pem;
ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:!SEED:+HIGH:+MEDIUM;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_protocols TLSv1.2 TLSv1.3;
#add_header Strict-Transport-Security "max-age=31536000";
}

Activer le vhost et redémarrer Nginx

sudo ln -s /etc/nginx/sites-available/toriphone /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Automatiser le renouvellement

Let's Encrypt renouvelle les certificats automatiquement, donc il faut que ces permissions soient réappliquées après chaque renouvellement. Ajoute un hook dans Certbot :

sudo certbot renew --deploy-hook "chmod 640 /etc/letsencrypt/live/votredomaine.com/privkey.pem && chmod 640 /etc/letsencrypt/live/votredomaine.com/fullchain.pem"