Journal du Nazmi

Une petite archive de mes prises de tête techniques et sociétales

Un certificat https gratuit pour mon site avec Let’s encrypt!

Temps de lecture : 3 minutes

Jusqu'aux années 2010 (et toujours aujourd'hui si l'on fait appel à un hébergement partagé), les certificats https étaient l'apanage des banques, grandes entreprises car leur mise en place était difficile et coûteuse, et leur renouvellement l'était aussi du fait de l'oligopole détenu par quelques sociétés comme Verisign ou Globalsign.

Devant une telle injustice autant pour les petits services web qui bénéficieraient de la confidentialité offerte par TLS/SSL que pour les clients qui voyaient une grande partie de leur traffic web circuler en clair, à la merci des pirates et autres espions, l'ISRG (Internet Security Research Group) aidé par l'EFF (Electronic Frontier Foundation), Mozilla, Cisco, OVH et PlanetHoster, ont mis en place une nouvelle autorité de certification complètement automatisée qui ne demanderait pas de frais de mise en place ou de renouvellement de certificat.

Complètement automatisée, elle repose sur un module pour le serveur web qui place un fichier dans le répertoire du site (dans un dossier .well-known) pour confirmer que la demande de certification vient bien du titulaire. L'échange se passe comme ça:

257.38.24.1: Hé let's encrypt, il me faut une signature de ma clé publique pour mondomaine.fr, tu peux vérifier je suis titulaire j'ai mis un dossier .well-known qui contient "cc bb tu veux voir ma bite"

Let's encrypt (LE): Ok je regarde les enregistrements DNS, je vois qu'ils me donnent un enregistrement A vers 257.38.24.1

LE: Je vais vérifier si je réussis à joindre ce serveur et si le .well-known est présent avec la clé que tu m'as donné.

LE: Ça me semble bon, voilà je signe ta clé, tu as un certificat signé, on se revoit dans 6 mois.

257.38.24.1: merchi

À partir de là, le serveur web donnera une clé publique signée par let's encrypt, puis chiffrera et signera tous les documents envoyés pour les domaines pour lesquels il a une clé signée par let's encrypt.

La mise en place nécessite juste d'installer le module de let's encrypt, certbot, puis de faire certbot -d mondomaine.com pour chaque domaine, les renouvellements eux seront gérés automatiquement !

Ils ont donc réussi à remplacer l'ancienne solution qui faisait intervenir des entités douteuses, attrapées à plusieurs reprises à surfacturer, voir à usurper (volontairement ou par négligence de leur sécurité) des entités (j'arrive pas à retrouver les articles là). Il reste un problème, celui que Let's encrypt pourrait en faire autant, enfin ça nous donne un acteur un peu plus libre et surtout gratuit.

Depuis 2015, le nombre d'utilisateurs de certificats TLS a explosé et Let's encrypt a une part de "marché" de plus de 50% à lui seul et a rendu l'achat de certificats pour les projets pro, quelque chose d'obsolète (un certificat coûtait généralement entre 50 et 100€ par an)

Comment installer let's encrypt sur son serveur ?

Prérequis: machine sous un os compatible avec un serveur apache2 en route

la procédure d'installation dépend de la plateforme, voir ici (pour ubuntu il faudra ajouter des ppa, pour debian il faudra voir dans les backports...)

Lorsque certbot est installé, il suffit de le configurer

sudo certbot --apache

Il va vous demander un email de contact en cas de problème de renouvellement de certificat, d'accepter les conditions d'utilisation, puis de sélectionner si vous voulez des certificats pour vos domaines configurés sur apache, personnellement je refuse et je fais la commande suivante pour les configurer manuellement:

sudo certbot -d mondomaine.fr

Après l'execution de cette commande, certbot demandera si vous voulez rediriger toutes les requètes sur la connexion sécurisée https port 443, ce que je choisis personnellement car je n'ai aucune application où il y aurait des incompatibilités avec https.

Et voilà maintenant j'ai l'HTTPS sur mon site !

Next Post

Previous Post

Leave a Reply

© 2020 Journal du Nazmi

Theme by Anders Norén