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
Allez plus loin...
Les certificats délivrés par Let’s Encrypt ne sont valides que 90 jours.
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
Ajouter un commentaire