Nginx : passer votre site en HTTPS gratuitement avec Let’s Encrypt

Je vous propose dans cet article de passer votre site, propulsé par nginx, en version sécurisé HTTPS, le tout gratuitement grace à Let’s Encrypt.
Let’s Encrypt propose en effet des certificats gratuits et un outil de mise en oeuvre.

L'HyperText Transfer Protocol Secure, plus connu sous l'abréviation HTTPS — littéralement « protocole de transfert hypertexte sécurisé » — est la combinaison du HTTP avec une couche de chiffrement comme SSL ou TLS.

Les données transitant entre le site web et l'utilisateur sont ainsi chiffrées et ne sont plus transmissent en claire sur internet (comme les mots de passe sur un formulaire de connexion non sécurisé...).

Ce tutoriel est obsolète, mais une version actualisée est dispo ici https://www.geek17.com/fr/content/nginx-passer-votre-site-en-https-gratuitement-avec-let-s-encrypt-67

 

Installation du client Let’s Encrypt

Le client Let’s Encrypt est disponible sur GitHub, il faut donc installer le paquet git pour pouvoir le récupérer.

sudo apt-get install git

Ensuite, direction le répertoire /etc et on télécharge le client Let’s Encrypt

cd /etc
sudo git clone https://github.com/letsencrypt/letsencrypt

Pour finaliser l'installation du client Let’s Encrypt (des paquets complémentaires seront téléchargés), nous allons afficher la page d'aide.

cd /etc/letsencrypt/
./letsencrypt-auto --help

Vous obtiendrez les infos suivantes

  letsencrypt-auto [SUBCOMMAND] [options] [-d domain] [-d domain] ...

 

Génération du certificat SSL

Nous allons utiliser le client en mode --manual pour seulement générer les clés SSH.

Pour cela, depuis le répertoire /etc/letsencrypt/, nous allons exécuter la commande suivante

./letsencrypt-auto certonly --manual -d www.geek17.com –d geek17.com --rsa-key-size 4096 --email xxx@geek17.com 

Dans cet exemple, j'ai spécifié :

  • 2 domaines : www.geek17.com et geek17.com avec l'option -d
  • une clé RSA 4096 bits est utilisée au lieu d'une clé 2048 bits par défaut
  • un email de contact

Le client Let’s Encrypt vous informe qu'il va enregistrer l'adresse IP utilisée pour générer le certificat.

Ensuite, pour vérifier que vous êtes bien le propriétaire des domaines spécifiés, le client Let’s Encrypt vous demande de créer un fichier avec un contenu spécifique dedans. 

Make sure your web server displays the following content at
http://www.geek17.com/.well-known/acme-challenge/e_3akOIhTI-6cyPFLvB8znQ2xo5gbGQSGGlP-JmsAKk before continuing:

e_3akOIhTI-6cyPFLvB8znQ2xo5gbGQSGGlP-JmsAKk.uC_R_Etbxb4tNnVeJ1nYFMkN_1h0eko-ryNksbzfqb0

Dans le cas ci-dessus, vous devez donc créer le fichier e_3akOIhTI-6cyPFLvB8znQ2xo5gbGQSGGlP-JmsAKk qui contiendra e_3akOIhTI-6cyPFLvB8znQ2xo5gbGQSGGlP-JmsAKk.uC_R_Etbxb4tNnVeJ1nYFMkN_1h0eko-ryNksbzfqb0

Ce fichier devra être uploadé sur votre serveur web de manière à être accessible via l'adresse http://www.geek17.com/.well-known/acme-challenge/e_3akOIhTI-6cyPFLvB8znQ...
Vérifier bien que cette adresse est accessible en l'ouvrant avec votre navigateur internet avant de valider au niveau du client Let’s Encrypt.

Cette vérification sera demandé pour chacun des domaines indiqués dans la commande ./letsencrypt-auto

Vous obtiendrez le message ci-dessous avec l'emplacement /etc/letsencrypt/live/www.geek17.com/

 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.geek17.com/fullchain.pem. Your cert
   will expire on 2016-05-28. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

Configuration du vHost nginx

Ouvrer la configuration de votre vhost

sudo nano /etc/nginx/conf.d/www.geek17.com.conf

Puis ajouter une entrée server qui écoute sur le port 443.
Vous remarquerez que l'emplacement de nos certificats SSL est spécifiée avec les options ssl_certificate et  ssl_certificate_key

....

server {
    listen 0.0.0.0:443 ssl;
    server_name  www.geek17.com geek17.com;

    root  /home/dev/www/www.geek17.com;
    index  index.php index.html index.htm;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/www.geek17.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.geek17.com/privkey.pem;
}

Reste à redémarrer nginx pour activer la modification

sudo service nginx restart

Maintenant, si vous ouvrez l'adresse de votre site web en mettant https:// devant, le cadenas vert indique que vous avez un certificat valide smiley

 

Allez plus loin...

Les certificats délivrés par Let’s Encrypt ne sont valides que 90 joursindecision.
Pour le mettre à jour automatiquement, rendez-vous sur cet article Nginx : prolonger automatiquement la durée des certificats Let’s Encrypt.

Il est possible d'améliorer l'efficacité et la sécurité de votre site HTTPS : Nginx : améliorer la sécurité et la rapidité de votre site HTTPS

Enfin, pour rediriger automatiquement vos visiteurs vers la version sécurisée HTTPS de votre site, suivez cet article Nginx : rediriger toutes vos url vers votre site HTTPS

Tags: 

Ajouter un commentaire

You must have Javascript enabled to use this form.