Let’s Encrypt

Base de connaissances

Let’s Encrypt

in

Présentation

Améliorez la sécurité de votre site Web grâce au chiffrement, même sur les serveurs les plus élémentaires, peut accroître la confiance de vos visiteurs dans votre site et votre capacité à l’exécuter. La configuration du cryptage sur un hébergement est généralement compliquée et coûteuse. Let’s Encrypt vise à changer cela en rendant la mise en œuvre du cryptage sur n’importe quel site web plus facile. Il s’agit d’un projet Open Source qui permet l’obtention et l’installation de certificats par des commandes simples et automatisées. Let’s Encrypt est une nouvelle autorité de certification capable de délivrer des certificats croisés signés par IdentTrust, ce qui permet à leurs certificats finaux d’être acceptés par tous les principaux navigateurs. Ce guide décrit les étapes à suivre pour installer leur client et comment l’utiliser pour gérer les certificats sur un serveur web exécutant nginx.

Obtenir le client Let’s Encrypt

Obtenir un serveur HTTPS peut être complexe. Let’s Encrypt vise à simplifier grandement la tâche en automatisant l’obtention de certificats et en configurant des serveurs Web pour les utiliser rapidement. Le client est complet et extensible pour l’autorité de certification Let’s Encrypt, ou toute autre autorité de certification qui utilise le protocole ACME, qui permet de gérer des certificats avec des commandes simples. Notez que le client est actuellement en version bêta et peut contenir des bugs. Il est recommandé de faire une sauvegarde de votre serveur avant de continuer. Le client est disponible via le référentiel GitHub du projet. Si vous n’avez pas encore installé git, vous pouvez l’obtenir avec l’une des deux commandes suivantes en fonction de votre système d’exploitation.

sudo apt-get install git
sudo yum install git

Il n’est pas nécessaire de configurer git si vous n’en avez besoin que pour le téléchargement de dépôts. Au lieu de cela, changez simplement le répertoire dans lequel vous souhaitez installer le client Let’s Encrypt et récupérez-le avec la commande suivante :

git clone https://github.com/letsencrypt/letsencrypt

Puis rendez-vous dans le répertoire fraîchement téléchargé

cd letsencrypt

L’obtention d’un certificat fonctionne à l’aide du script autonome letsencrypt-auto fourni avec le client. Il installe toutes ses dépendances et met à jour le code client automatiquement. Vous devez donc exécuter le client sur un compte doté de privilèges sudo. Utilisez la commande ci-dessous pour afficher les commandes et drapeaux acceptés.

./letsencrypt-auto --help

Étant donné que la commande d’aide fonctionne, vous êtes prêt à poursuivre l’obtention et l’installation d’un certificat.

Obtenir un certificat

Let’s Encrypt valide le domaine sur lequel il est installé de façon similaire à un processus CA traditionnel en identifiant l’administrateur du serveur via une clé publique. Le client génère une nouvelle paire de clés lors de l’interaction avec les serveurs Let’s Encrypt pour la première fois et vise ensuite à prouver à l’autorité de certification que l’hôte a le contrôle sur un domaine particulier d’au moins une des deux manières suivantes:

  • Par le provisionnement d’un enregistrement DNS pour le domaine en question.
  • Par la fourniture d’une ressource HTTP sous un URI identifiée sur le domaine.

En plus de l’un des deux défis le client doit également signer un nonce avec sa clé privée pour prouver qu’il contrôle cette paire de clés. Pour aider le client Let’s Encrypt à accomplir ces tâches, il prend en charge un certain nombre de plugins qui peuvent être utilisés pour obtenir ou installer des certificats. Alors que Let’s Encrypt est en cours de développement, ils ont l’intention de fournir un plugin pour Nginx qui va automatiser l’installation des certificats, mais pour le moment ce plugin est encore expérimental, il est recommandé d’utiliser la méthode webroot.
Le plugin webroot automatise l’obtention des certificats de l’autorité de certification et les enregistre sur l’hôte. Pour utiliser ce plugin depuis la ligne de commande, vous devez exécuter le client avec la commande certonly, puis ajouter -webroot flagau chemin d’accès à la racine et enfin spécifier au moins un nom de domaine.

sudo ./letsencrypt-auto certonly --webroot -w  -d

Cela démarre le script dans un mode interactif en posant quelques questions pour obtenir le certificat correctement. Lors de la première installation sur un hôte spécifique, vous devez saisir un e-mail de contact. Ensuite, passez en revue les Conditions de service de Let’s Encrypt et sélectionnez Accepter si vous acceptez les termes et souhaitez utiliser le service. Si le client a réussi à obtenir un certificat, vous pouvez trouver une confirmation et la date d’expiration du certificat à la fin du script d’installation. Si vous rencontrez des problèmes lors de l’utilisation du script client, assurez-vous d’essayer d’enregistrer un domaine ou un sous-domaine qui se résout actuellement sur cet hôte. Vérifiez également que vous avez les privilèges administratifs pour exécuter les commandes et que vous pointez bien correctement vers la racine de votre site Web. Ensuite, vous devez configurer Nginx pour utiliser le certificat pour accepter les connexions HTTPS. Selon le choix de votre OS, les fichiers de configuration du serveur sont généralement situés sous le dossier conf.d ou sites-availables. Sur Ubuntu et d’autres systèmes basés sur Debian, vous pouvez trouver la configuration par défaut de ce dernier, l’ouvrir pour la modifier avec la commande suivante :

sudo vi /etc/nginx/sites-available/default

Les systèmes avec CentOS ou d’autres variantes Red Hat ont le même fichier de configuration généralement conf.d/default.conf, ouvrez-le avec la commande suivante.

sudo vi /etc/nginx/conf.d/default.conf

La configuration par défaut définit un seul site pour les connexions HTTP. Gardez le serveur à l’écoute du port 80 comme c’est le cas pour l’instant, mais éditez ou ajoutez un serveur HTTPS à la fin du fichier comme la configuration exemple ci-dessous. Remplacez-le dans la configuration par le nom de domaine de votre serveur et par le répertoire dans lequel résident les fichiers du serveur Web dans /usr/share/nginx/html ou /var/www/html.

# HTTPS server
 server {
   listen 443 ssl;
   server_name ;
   ssl_certificate /etc/letsencrypt/live//cert.pem;
   ssl_certificate_key /etc/letsencrypt/live//privkey.pem;
   ssl_session_cache shared:SSL:1m;
   ssl_session_timeout 5m;
   ssl_ciphers HIGH:!aNULL:!MD5;
   ssl_prefer_server_ciphers on;
   location / {
      root ;
      index index.html index.htm;
   }
 }

Enregistrez ensuite le fichier et quittez l’éditeur. Pour que les modifications prennent effet, vous devez redémarrer nginx.

sudo service nginx restart

Now open your domain in a web browser using https://votre_domaine, when it loads the installation is working properly. Optionally you can add a redirection from your HTTP connections to the encrypted HTTPS by editing the same configuration file as you did before. Make sure you have the 3 lines shown below in your HTTP server segment. Again replace thewith your web servers domain. The rest of that segment can remain as is.
Maintenant, ouvrez votre domaine dans un navigateur Web en utilisant https://votre_domaine, quand il charge l’installation fonctionne correctement. En option, vous pouvez ajouter une redirection de vos connexions HTTP vers HTTPS crypté en éditant le même fichier de configuration que précédemment. Assurez-vous que vous avez les 3 lignes ci-dessous dans votre segment de serveur HTTP. Encore une fois remplacez server_name par votre domaine de serveurs Web. Le reste de ce segment peut rester tel quel.

server {
   listen 80;
   server_name ;
   return 301 https://$server_name$request_uri;
 …
 }

Puis, enregistrez le fichier, quitter l’éditeur et rechargez Nginx de nouveau. Désormais vous devriez toujours arriver sur l’adresse cryptée de votre site https:// y compris pour les liens poitant sur votre ancienne adresse http://nom_de_domaine.

Renouveler un certificat

À la fin du script d’obtention du certificat, vous verrez la date d’expiration du certificat qui est habituellement de 3 mois à partir du jour où vous l’avez installé. Le renouvellement d’un certificat est aussi simple que de le réinstaller en utilisant les mêmes valeurs que précédemment. Dans presque toutes les circonstances, le renouvellement doit être effectué avec la commande certonly, après quoi le rechargement de votre configuration de serveur Web devrait être suffisant pour déployer le certificat renouvelé, par exemple:

./letsencrypt-auto certonly --webroot -w  -d

Ensuite, répondez aux questions que le client demande pour renouveler et remplacer le certificat. Une fois le renouvellement terminé, rechargez simplement votre service Web pour mettre à jour la configuration à l’aide de la commande suivante :

sudo nginx -s reload

Votre certificat est de nouveau valable pour une période de 3 mois. Notez que, comme Let’s Encrypt est encore en développement, ils ont fixé certaines limites de taux pour l’émission de certificats afin de protéger le service contre les abus accidentels ou intentionnels. Vous pouvez consulter d’autres détails et de la documentation sur le site Web de Let’s Encrypt. Let’s Encrypt a l’intention de fournir des scripts de renouvellement plus tard pour automatiser ce processus, mais en attendant, vous pouvez créer votre propre certificat en suivant l’exemple ci-dessous.

#!/bin/sh
  if ! ~/letsencrypt/letsencrypt-auto certonly -tvv --keep --webroot -w 
-d  > /var/log/letsencrypt/renew.log 2>&1 ; then
     echo Automated renewal failed:
     cat /var/log/letsencrypt/renew.log
     exit 1
  fi
  nginx -s reload

Le script d’exemple exécute le renouvellement tout en dirigeant la sortie vers un fichier journal, puis vérifie si elle a réussi ou non, et enfin recharge Nginx pour terminer le renouvellement. Une fois que votre script de renouvellement fonctionne, vous pouvez l’automatiser avec un travail Cron.

Révoquer un certificat

Si vous souhaitez supprimer un certificat de votre serveur, il peut être révoqué à l’aide de la sous-commande avec Let’s Encrypt client. La commande ci-dessous peut être utilisée pour révoquer un certificat particulier. Remplacez thein la commande par le domaine quel certificat vous souhaitez révoquer.

./letsencrypt-auto revoke --cert-path /etc/letsencrypt/live//cert.pem

Le processus ne donnera pas de confirmation à la fin, mais si vous l’exécutez à nouveau vous obtiendrez un message que le certificat a déjà été révoqué.

Autres extensions

Dans la plupart des cas, il suffit d’installer et de renouveler vos certificats comme indiqué ci-dessus, mais le client Let’s Encrypt prend également en charge certains plugins supplémentaires pour la gestion de vos certificats. Par exemple, si vous n’avez pas encore de service Web configuré lors de l’obtention d’un nouveau certificat, vous pouvez utiliser l’extension autonome avec la sous-commande certonly. Ce guide se concentre sur l’installation du certificat sur Nginx en utilisant le plugin -webroot, bien que Let’s Encrypt fonctionne aussi bien avec d’autres logiciels de serveurs Web. Let’s Encrypt prend en charge l’édition et l’installation automatiques de certificats pour les serveurs exécutant Apache. Vous pouvez également trouver d’autres options prises en charge dans la documentation de Let’s Encrypt.

This entry was posted in . Bookmark the permalink.