BLOG | NGINX

Mise à jour: Utilisation des certificats SSL/TLS gratuits Let’s Encrypt avec NGINX

NGINX-Partie-de-F5-horiz-black-type-RGB
Miniature d'Amir Rawdat
Amir Rawdat
Publié le 28 janvier 2021

É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.

Comment fonctionne Let’s Encrypt

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.

Prérequis

Avant de commencer avec Let’s Encrypt, vous devez :

  • Avoir NGINX ou NGINX Plus installé.
  • Posséder ou contrôler le nom de domaine enregistré pour le certificat. Si vous n'avez pas de nom de domaine enregistré, vous pouvez utiliser un registraire de noms de domaine, tel que GoDaddy ou dnsexit .
  • Créez un enregistrement DNS qui associe votre nom de domaine et l’adresse IP publique de votre serveur.

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).

1. Téléchargez le client Let’s Encrypt

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

2. Configurer 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 .

  1. 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 ).

  2. 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 ;
    }
  3. 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

3. Obtenir le certificat SSL/TLS

Le plug-in NGINX pour certbot se charge de reconfigurer NGINX et de recharger sa configuration chaque fois que nécessaire.

  1. 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
  2. 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.

  3. 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
}

4. Renouveler automatiquement les certificats Let’s Encrypt

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.

  1. Ouvrez le fichier crontab .

    $ crontab -e
  2. 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
  3. Enregistrez et fermez le fichier. Tous les certificats installés seront automatiquement renouvelés et rechargés.

  4. Résumé

    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 .

    Documentation connexe

    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."