Lancée il y a un peu plus d’un an, Let’s Encrypt est une autorité de certification fondée dans le but de délivrer des certificats TLS gratuitement pour un Web « plus sécurisé ». Les certificats obtenus peuvent être utilisés pour des services Web, des serveurs mails et bien d’autres applications.
Cette autorité de certification est soutenue par l’ISRG (Internet Security Research Group) et grandement financée par la fondation Mozilla.
Depuis sa version 2.3.3, pfSense intègre le paquet ACME qui permet d’obtenir et gérer ses certificats Let’s Encrypt directement depuis l’interface de pfSense.
Nous allons voir comment l’utiliser.
Attention cependant, le paquet ACME est pour le moment en version alpha. Son utilisation est donc susceptible d’être modifiée dans les prochains mois.

Préparation

Pour valider la propriété du domaine et du serveur, ACME propose différentes méthodes de validation. Nous allons voir ici la méthode basée sur un enregistrement DNS.
En effet, je ne souhaite pas utiliser de méthodes de validation basées sur un fichier Web. Cela impliquerait d’exposer le firewall à l’extérieur sur les ports 80 et 443 ; ce qui n’est pas envisageable d’un point de vue pratique et sécurité.

Pour utiliser la validation par DNS, il est obligatoire d’avoir la main sur le zone DNS du domaine concerné.
En effet, Let’s Encrypt vérifie la présence d’un enregistrement TXT sous la forme de « _acme-challenge.domain.tld » contenant la valeur d’autorisation. Cela permet de prouver que la personne qui demande le certificat, contrôle également la zone DNS du domaine.

Pour installer le paquet ACME, on se rend dans System / Package Manager / Available Packages et on installe le paquet du même nom.

Installation du paquet ACME

Installation du paquet ACME

Demande de certificat

Une fois ACME installé, on accède à sa configuration dans Services / ACME Certificates.
Nous allons commencer par créer une clé d’authentification auprès de Let’s Encrypt.
On se rend dans l’onglet Account Key pour créer une nouvelle entrée.
Il faut y saisir un nom, et une description. Pour tester que la validation fonctionne avant de générer le certificat définitif, on peut choisir le serveur Staging. Autrement, on choisi celui Production.
Pour obtenir une clé, il faut ensuite cliquer sur Create new account key qui remplira automatiquement le champs précédent.
Enfin, on valide en cliquant sur Register acme account key et on sauvegarde.

Création de l’account key

Désormais on peut demander un nouveau certificat dans l’onglet Certificates.
Il faut remplir le formulaire en précisant un nom de certificat, le compte créé précédemment et une longueur de clé.
Ensuite, dans la SAN list, nous allons préciser les différents noms de domaine pour lesquels notre certificat s’appliquera. Pour chaque domaine on précise la méthode de validation à employer.
Comme vous pouvez le voir, de nombreux modes de validations sont disponibles. Comme expliqué plus haut, je choisirai DNS-Manual. On peut alors sauvegarder.

Demande de certificat

Il nous faut désormais obtenir l’enregistrement TXT à ajouter dans notre zone DNS pour validation.
A côté de notre demande de certificats, nous allons choisir Issue. Des messages de logs s’affichent alors au dessus, dans lequel on trouve le sous domaine et la valeur de l’enregistrement TXT à ajouter.

Obtention de la valeur du TXT

On édite alors notre zone DNS pour y ajouter cet enregistrement.
Après quelques minutes (pour s’assurer que la propagation DNS est bien effective), on peut alors cliquer sur Renew pour obtenir le certificat. Les fichiers sont alors enregistrés dans le répertoire qui s’affiche ci dessous.

Obtention du certificat

Il nous reste plus qu’à récupérer le certificat. Comme le paquet n’est pour le moment qu’en version alpha, l’export via le Cert Manager ne semble pas fonctionner correctement (j’obtiens deux fichiers de 0ko).
La solution que j’ai trouvée pour le moment est de se connecter en SSH sur la pfSense et de récupérer directement les fichiers en SCP.

Les fichiers générés

Il reste cependant une solution pour les récupérer depuis l’interface web.
Dans Diagnostics / Command Prompt il suffit d’insérer le chemin de chaque fichiers listés lors de la demande certificat pour les télécharger sur notre machine.

Téléchargement via l’interface web

Si on souhaite ensuite utiliser le certificat pour l’interface web de pfSense, il suffit de l’importer dans System / Cert Manager puis de le spécifier dans System / Advanced.

Comme d’habitude, si vous avez des questions, n’hésitez pas à les poser dans les commentaires.