Blog de Mosanweb.com

L’objectif de Let’s Encrypt et du protocole ACME est de rendre possible toute installation de certificats numériques vérifiés par les navigateurs pour permettre un accès sécurisé à son site  via le protocole HTTPS et d’automatiser l’obtention de ce certificat, et ce, sans intervention humaine dans la procédure d’obtention du certificat (nécessaire à la configuration du HTTPS). Cela est accompli en exécutant une transaction entre Let’s Encrypt et le gestionnaire du serveur web (l’agent).

Afin de comprendre comment cette technologie fonctionne, nous allons démarrer sur base d’un nom de domaine fictif (https://example.com) avec un gestionnaire de certificats compatible avec Let’s Encrypt.

Validation du domaine

Let’s Encrypt identifie l’administrateur du site depuis une clé publique. La première fois que le gestionnaire de certificats interagit avec Let’s Encrypt, cela génère une nouvelle paire de clés de sécurité qui prouve à l’autorité de certification (CA) de Let’s Encrypt que le serveur web contrôle un ou plusieurs noms de domaines.

Afin d’exécuter le processus, le gestionnaire demande à Let’s Encrypt CA l’information nécessaire pour prouver qu’il gère bien le site « example.com« . Let’s Encrypt va donc effectuer une batterie de tests au site afin de le vérifier. Voici différentes façons où le gestionnaire va prouver qu’il contrôle bien le domaine:

  • En ajoutant un enregistrement DNS dans la zone de « example.com« , ou
  • En ajoutant une ressource HTTP dans le dossier .well-known/ à l’adresse de https://example.com/

Au cours des vérifications, Let’s Encrypt CA va faire parvenir une valeur arbitraire que le gestionnaire devra signer (un nonce, en cryptographie) avec sa clé privée pour prouver qu’il contrôle bien la paire de clés.

L’agent va donc compléter une des vérifications pour Let’s Encrypt qui va ensuite accomplir la tâche suivante illustrée ci-dessus: il crée un fichier dans le chemin spécifique du site https://example.com. Le gestionnaire va ensuite signer la nonce apportée avec sa clé privée. Une fois que le gestionnaire a fait cela, il informe à Let’s Encrypt CA qu’il est prêt à compléter sa validation.

C’est ensuite au tour de Let’s Encrypt CA de vérifier que tout est bon en téléchargeant le fichier signé du site web et s’assurer qu’il s’agit bel et bien du contenu attendu.

Si la signature de la nonce est valide, et que les vérifications se passent comme prévu, alors le gestionnaire identifié par la clé publique est autorisé à gérer le certificat de example.com. Nous appelons la clé paire du gestionnaire une « authorized key pair » pour example.com.

Délivrance du certificat et révocation

Une fois que le gestionnaire a une « authorized key pair » à sa disposition, il peut demander la création, le renouvellement et la révocation de certificat pour son site.

Pour obtenir un certificat pour son nom de domaine, le gestionnaire établis un CSR (Certificate Signing Request) selon la norme PKCS#10 et demande à Let’s Encrypt CA de délivrer un certificat pour example.com avec une clé publique spécifiée. Le CSR inclus une signature effectuée par la clé privée correspondant à la clé publique dans ce même CSR. Le gestionnaire va alors signer le CSR en entier avec la clé autorisée de example.com ainsi Let’s Encrypt permettra sa délivrance.

Quand Let’s Encrypt CA reçoit une requête, il vérifie les deux signatures. Si tout est bon, il délivre le certificat de sécurité pour example.com avec la clé publique venant du CSR au gestionnaire.

La révocation fonctionne d’une façon similaire. Le gestionnaire reçoit une demande de révocation avec la pair de clés pour example.com et Let’s Encrypt CA vérifie si la requête est autorisée. Si c’est le cas, Let’s Encrypt publie la révocation dans les canaux de révocations habituels (comme CRLs, OCSP), et donc ainsi les navigateurs web prennent connaissance de la non recevabilité des certificats et vont les refuser systématiquement.

 

Gérant de Mosanweb.com, je partage ici mes connaissances techniques informatiques, plus généralement pour le web mais aussi tout ce qui touche directement la plateforme d'hébergement en elle-même.

Voir les commentaires

Il n'y a actuellement pas de commentaire publié.
Proch. post