Let’s Encrypt : la sécurité SSL pour tous

Let's Encrypt

Cet article est le premier d’une série que nous appellerons boîte à outil de la startup. Nous parlerons de SSL et de Let’s Encrypt. La plupart des startup sont des sociétés orientées vers la technologie. Elles s’appuient très fortement sur des logiciels et sur une infrastructure numérique. Dans la pratique elles ne disposent pas nécessairement de spécialistes dans chacun des aspects techniques. A Open Agora, nous avons investi du temps dans la maîtrise de certains outils. Nous souhaitons partager ce que nous avons appris avec ceux qui sont confrontés à des problèmes similaires.

Qu’est-ce que SSL et pourquoi se préoccuper de certificats SSL ?

SSL/TLS est une technologie qui est utilisée sur internet pour valider l’identité d’un site, encoder et assurer l’intégrité des communications. Par abus de langage, dans la suite, nous parlerons simplement de SSL plutôt que SSL/TLS, car TLS est une modernisation de SSL. Elle est utilisée par de nombreux protocoles. Mais l’usage le plus connu est https. Il est indiqué par le cadenas vert qu’on trouve près de la barre d’adresse du navigateur.

Pour utiliser https, un site web a besoin de certificats SSL.

En premier lieu, ces certificats prouvent l’identité du site à ses visiteurs. Ce qui signifie plus concrètement qu’un tiers de confiance garantit cette identité et a signé ces certificats.

Ensuite, les certificats SSL rendent possible le codage des données qui transitent entre le site web et le navigateur. Dès lors qu’on télécharge un contenu sans utiliser SSL, tous les dispositifs réseau sur le trajet ont la possibilité de voir ce contenu. Et réciproquement, les données transmises vers le site peuvent également être observées.

SSL n’est en aucun cas un système parfait. Ainsi, de grandes entités gouvernementales (on pense à la NSA, par exemple) peuvent casser le codage produit par les certificats SSL. Néanmoins, cela nécessite une colossale capacité de calcul et ne peut généralement pas être réalisé en temps réel. Dans tous les cas ce n’est pas accessible au hacker ordinaire.

Pour une société du web, disposer de certificats SSL est une nécessité pour assurer la sécurité et la confidentialité à ses clients, et naturellement pour être identifiée.

Qu’est-ce que Let’s Encrypt ?

Let's Encrypt - logo

Let’s Encrypt est une autorité de certification, gratuite, automatisée et ouverte. Elle a été mise en place dans l’intérêt de tous. Elle est gérée par une organisation à but non-lucratif, l’Internet Security Research Group, le groupe de recherche sur la sécurité d’Internet. Sa mission est de réduire les barrières éducatives, financières et technologiques à la sécurisation de la communication sur Internet.

Pour pouvoir fournir des certificats SSL à tout site qui en fait la demande, Let’s Encrypt héberge une infrastructure qui gère les demandes de certificats. Puis, il diffuse un logiciel (certbot) qui réalise la création des certificats sur le serveur du site demandeur. Au cours du processus de création des certificats, il y a un échange qui permet à Let’s Encrypt de vérifier que le serveur qui effectue la demande est bien enregistré. Il verifie également que son identité correspond bien à celle du certificat demandé. Plus précisément, ce processus est un protocole totalement public (dénommé ACME). Et, certbot n’est qu’un client spécifique pour ce protocole (il en existe bien d’autres, comme on peut le voir sur cette page).

Utilisation pratique de Let’s Encrypt.

Supposons que vous souhaitiez créer un certificat pour le site web du nom de test.example.com. Le logiciel certbot est lancé sur ce serveur, et entame une communication avec les serveurs de Let’s Encrypt, en indiquant qu’il souhaite créer des certificats pour test.example.com. Ces machines démarrent alors une communication avec test.example.com, en utilisant l’adresse IP connue des serveurs DNS publics. Si jamais certbot est réellement en train de s’exécuter à cette adresse, il lui est possible de répondre correctement à quelques défis qui lui sont adressés par Let’s Encrypt. Il est alors autorisé à avoir les certificats (en réalité il obtient la signature de Let’s Encrypt pour ces certificats).

Si une personne demande des certificats pour test.example.com, mais ne possède pas ce serveur, il lui est alors impossible de répondre correctement aux défis, et donc Let’s Encrypt ne signera pas ses certificats.

Configuration élémentaire

A présent, on décrit brièvement comment mettre en place des certificats Let’s Encrypt sur une machine GNU/Linux Debian, avec un serveur web Apache, dans une configuration simple. Ces instructions devraient être transposables simplement pour une autre distribution Linux ou un autre serveur web.

Contexte : considérons le serveur Debian, test.example.com, dont l’adresse IP est enregistrée publiquement dans le système DNS global.

Première étape, installation de certbot :

sudo apt update
sudo apt install certbot python-certbot-apache

(La machine demande votre mot de passe. Vous pouvez également installer python-certbot-nginx si vous utilisez Nginx)

Ensuite, on considère que Apache fonctionne correctement sur ce système, il suffit de saisir :

sudo certbot --apache -d test.example.com

(Il suffit de remplacer --apache par --nginx si c’est Nginx qui est utilisé au lieu de Apache)

Et c’est terminé ! Vous avez installé les certificats Let’s Encrypt. Vos certificats sont stockés dans le dossier /etc/letsencrypt/live/test.example.com

Et maintenant ?

Il y a les quatre fichiers suivants :

  • cert.pem: Certificat SSL simple (ne doit pas être utilisé en général) ;
  • chain.pem: La chaîne de certification SSL (ne doit pas être utilisée en général) ;
  • fullchain.pem: Le certificat et la chaîne de certification (c’est le fichier qu’on utilise en général);
  • privkey.pem: Il s’agit de la clé privée (elle n’a jamais quitté votre serveur).

Ces fichiers sont en fait des liens (symboliques), les fichiers réels sont placés dans le dossier /etc/letsencrypt/archive/test.example.com.

Les liens (dans le dossier « live ») pointent toujours vers la version la plus récente du dossier archive.

Ce mode d’utilisation de certbot a également pour effet de modifier votre configuration d’Apache en précisant l’emplacement des fichiers fullchain.pem et privkey.pem.

SSLCertificateKeyFile /etc/letsencrypt/live/test.example.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/test.example.com/fullchain.pem

Let’s Encrypt ne signe que des certificats de trois mois (90 jours). Le but est de limiter au maximum l’impact d’un certificat compromis. En revanche, le système permet un renouvellement simple. Concrètement, vous n’avez rien de plus à faire pour que vos certificats soient renouvelés automatiquement. Dans l’éventualité improbable où ce ne serait pas le cas (en principe 1 mois avant l’échéance du certificat), il suffit de taper :

sudo certbot renew

La configuration de renouvellement est stockée dans le fichier /etc/letsencrypt/renewal/test.example.com.conf.

Conclusion

Pour en apprendre davantage sur Let’s Encrypt, nous vous invitons à lire notre article. Nous présentons un ensemble d’astuces pour la configuration avancée, en particulier si vous utilisez un proxy inverse (reverse proxy), tel que Nginx pour l’accès à votre (vos) serveur.

Lire aussi sur notre blog

Let’s Encrypt : configuration avancée

N’hésitez pas à nous contacter si vous avez des questions.

avatar

A propos d’Open Agora

Consultations nuancées et ciblées

Les solutions Open Agora permettent de collecter des opinions riches et d’atteindre facilement le consensus

Partager / Share this...