Éditeur – L’article de blog détaillant la procédure originale d’utilisation de Let’s Encrypt avec NGINX (de février 2016) redirige ici. Les instructions dans ce message sont obsolètes.
Cet article a été mis à jour pour éliminer la dépendance à certbot‑auto
, que l'Electronic Frontier Federation (EFF) a déconseillé dans Certbot 1.10.0 pour Debian et Ubuntu et dans Certbot 1.11.0 pour tous les autres systèmes d'exploitation. Pour plus de détails et d’autres méthodes d’installation, consultez cet article de l’EFF .
Consultez également notre article de blog de nginx.conf 2015, dans lequel Peter Eckersley et Yan Zhu de l'Electronic Frontier Foundation présentent la nouvelle autorité de certification Let's Encrypt .
Il est bien connu que le cryptage SSL/TLS de votre site Web conduit à des classements de recherche plus élevés et à une meilleure sécurité pour vos utilisateurs. Cependant, un certain nombre d’obstacles empêchent les propriétaires de sites Web d’adopter SSL.
Deux des plus grands obstacles ont été le coût et les processus manuels impliqués dans l’obtention d’un certificat. Mais maintenant, avec Let's Encrypt , ils ne sont plus un problème. Let's Encrypt rend le cryptage SSL/TLS accessible gratuitement à tous.
Let’s Encrypt est une autorité de certification (CA) gratuite, automatisée et ouverte. Oui, c’est vrai : Certificats SSL/TLS gratuits. Les certificats émis par Let’s Encrypt sont aujourd’hui approuvés par la plupart des navigateurs, y compris les navigateurs plus anciens tels qu’Internet Explorer sur Windows XP SP3. De plus, Let’s Encrypt automatise entièrement l’émission et le renouvellement des certificats.
Dans cet article de blog, nous expliquons comment utiliser le client Let’s Encrypt pour générer des certificats et comment configurer automatiquement NGINX Open Source et NGINX Plus pour les utiliser.
Avant d’émettre un certificat, Let’s Encrypt valide la propriété de votre domaine. Le client Let’s Encrypt, exécuté sur votre hôte, crée un fichier temporaire (un jeton) contenant les informations requises. Le serveur de validation Let’s Encrypt effectue ensuite une requête HTTP pour récupérer le fichier et valide le jeton, ce qui vérifie que l’enregistrement DNS de votre domaine correspond au serveur exécutant le client Let’s Encrypt.
Avant de commencer avec Let’s Encrypt, vous devez :
Vous pouvez désormais facilement configurer Let's Encrypt avec NGINX Open Source ou NGINX Plus (pour faciliter la lecture, nous nous référerons désormais simplement à NGINX ).
Note : Nous avons testé la procédure décrite dans cet article de blog sur Ubuntu 16.04 (Xenial).
Tout d’abord, téléchargez le client Let's Encrypt, certbot
.
Comme mentionné ci-dessus, nous avons testé les instructions sur Ubuntu 16.04, et voici les commandes appropriées sur cette plateforme :
$ apt-get update $ sudo apt-get install certbot $ apt-get install python-certbot-nginx
Avec Ubuntu 18.04 et versions ultérieures, remplacez la version Python 3 :
$ apt-get update $ sudo apt-get install certbot $ apt-get install python3-certbot-nginx
certbot
peut configurer automatiquement NGINX pour SSL/TLS. Il recherche et modifie le bloc serveur
dans votre configuration NGINX qui contient une directive server_name
avec le nom de domaine pour lequel vous demandez un certificat. Dans notre exemple, le domaine est www.exemple.com .
En supposant que vous démarrez avec une nouvelle installation de NGINX, utilisez un éditeur de texte pour créer un fichier dans le répertoire /etc/nginx/conf.d nommé domain‑name .conf (donc dans notre exemple, www.example.com.conf ).
Spécifiez votre nom de domaine (et ses variantes, le cas échéant) avec la directive server_name
:
serveur { écouter 80 serveur_par_défaut ;
écouter [::]:80 serveur_par_défaut ;
racine /var/www/html ;
nom_serveur exemple.com www.exemple.com ;
}
Enregistrez le fichier, puis exécutez cette commande pour vérifier la syntaxe de votre configuration et redémarrer NGINX :
$ nginx -t && nginx -s recharger
Le plug-in NGINX pour certbot
se charge de reconfigurer NGINX et de recharger sa configuration chaque fois que nécessaire.
Exécutez la commande suivante pour générer des certificats avec le plug-in NGINX :
$ sudo certbot --nginx -d exemple.com -d www.exemple.com
Répondez aux invites de certbot
pour configurer vos paramètres HTTPS, ce qui implique de saisir votre adresse e-mail et d'accepter les conditions de service de Let's Encrypt.
Une fois la génération du certificat terminée, NGINX se recharge avec les nouveaux paramètres. certbot
génère un message indiquant que la génération du certificat a réussi et spécifiant l'emplacement du certificat sur votre serveur.
Félicitations ! Vous avez activé avec succès https://example.com et https://www.example.com
-------------------------------------------------------------------------------------
REMARQUES IMPORTANTES :
Félicitations ! Votre certificat et votre chaîne ont été enregistrés à l'adresse :
/etc/letsencrypt/live/example.com/fullchain.pem
Votre fichier de clé a été enregistré à l'adresse :
/etc/letsencrypt/live/example.com//privkey.pem
Votre certificat expirera le 12/12/2017.
Note : Les certificats Let's Encrypt expirent après 90 jours (le 12/12/2017 dans l'exemple). Pour plus d'informations sur le renouvellement automatique des certificats, voir Renouvellement automatique des certificats Let's Encrypt ci-dessous.
Si vous regardez le nom de domaine .conf , vous voyez que certbot
l'a modifié :
server { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
listen 443 ssl; # géré par Certbot
# certificat RSA
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # géré par Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # géré par Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # géré par Certbot
# Rediriger le trafic non-https vers https
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # géré par Certbot
}
Les certificats Let's Encrypt expirent après 90 jours. Nous vous encourageons à renouveler automatiquement vos certificats. Ici, nous ajoutons une tâche cron
à un fichier crontab existant pour ce faire.
Ouvrez le fichier crontab .
$ crontab -e
Ajoutez la commande certbot
à exécuter quotidiennement. Dans cet exemple, nous exécutons la commande tous les jours à midi. La commande vérifie si le certificat sur le serveur expirera dans les 30 prochains jours et le renouvelle si tel est le cas. La directive --quiet
indique à certbot
de ne pas générer de sortie.
0 12 * * * /usr/bin/certbot renouveler --quiet
Enregistrez et fermez le fichier. Tous les certificats installés seront automatiquement renouvelés et rechargés.
Nous avons installé l’agent Let’s Encrypt pour générer des certificats SSL/TLS pour un nom de domaine enregistré. Nous avons configuré NGINX pour utiliser les certificats et configurer les renouvellements automatiques des certificats. Avec les certificats Let’s Encrypt pour NGINX et NGINX Plus, vous pouvez disposer d’un site Web simple et sécurisé, opérationnel en quelques minutes.
Pour tester vous-même Let's Encrypt avec NGINX Plus, démarrez votre essai gratuit de 30 jours dès aujourd'hui ou contactez-nous pour discuter de vos cas d'utilisation .
Sécurisation du trafic HTTP vers les serveurs en amont
Sécurisation du trafic TCP vers les serveurs en amont
Résiliation SSL NGINX
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."