PfSense : renouveler le certificat Let’s Encrypt avec l’API OVH
I. Présentation
Dans ce tutoriel, nous allons voir comment automatiser le renouvellement d'un certificat Let's Encrypt via ACME et l'API OVH sur un pare-feu PfSense. Cette méthode basée sur l'API OVH permet de renouveler le certificat au niveau du pare-feu, ce qui est intéressant si l'on utilise PfSense en tant que reverse proxy.
Au sein de mon tutoriel "PfSense : reverse proxy HTTPS avec HAProxy et ACME (Let's Encrypt)", j'ai utilisé la méthode "DNS-Manual" pour demander le certificat Let's Encrypt. Il s'avère que cette méthode n'est pas très pratique, car elle nécessite de créer un enregistrement DNS de type "TXT" avec une valeur spécifique à chaque demande de renouvellement. Autrement dit, cela nécessite d'agir manuellement sur la zone DNS du domaine. En utilisant la méthode basée sur l'API OVH, ce processus de renouvellement du certificat Let's Encrypt est entièrement automatisé : une bonne nouvelle ! D'ailleurs, cette méthode peut être utilisée sur d'autres solutions où l'on implémente Let's Encrypt, comme sur un NAS Synology, par exemple.
Cette méthode est relativement simple à utiliser.... Suivez le guide. Je pars du principe que vous avez déjà un pare-feu PfSense et que le paquet ACME est déjà en place. Si besoin, référez-vous au tutoriel mentionné ci-dessus.
II. ACME et l'API OVH
Tout d'abord, il faut créer une clé d'API côté OVH afin de pouvoir gérer la zone DNS de cette façon. Cliquez sur le lien ci-dessous :
Création d'une clé d'accès à l'API OVH
Vous allez arriver sur le site "api.ovh.com" avec un formulaire à l'écran. Voici comment le compléter :
- Account ID or email address : identifiant OVH rattaché au domaine concerné par le certificat
- Password : mot de passe associé à ce compte OVH
- Script name : nom du "script", peu importe
- Script description : une description pour cet accès
- Validity : durée de validité, choisissez "Unlimited" pour que ce soit illimité dans le temps
- Rights : les droits d'accès à attribuer à cette clé (elle doit pouvoir créer et supprimer des enregistrements DNS), remplacez "mydomain.com" par votre nom de domaine, sans modifier le reste du chemin
- Restricted IPs : afin de restreindre l'accès à l'API et sécuriser l'accès à cette clé d'API, je vous recommande de mettre l'adresse IP publique de votre pare-feu PfSense : il sera le seul à pouvoir utiliser l'accès que nous créons.
Lorsque c'est fait, cliquez sur "Create keys".
Vous allez obtenir plusieurs valeurs, notamment deux clés et un secret : gardez ces valeurs bien au chaud. Ensuite, connectez-vous sur le pare-feu PfSens : Services > ACME Certificates. Dans l'onglet "Certificates", modifiez le certificat qui doit utiliser cette nouvelle méthode de validation (ou créez un certificat si vous n'en avez pas).
Au niveau de l'option "Domain SAN list", choisissez la méthode "DNS-ovh / kimsufi / soyoustart / runabove" : un formulaire va apparaître. Remplissez les valeurs "Application Key", "Application Secret" et "Consumer Key" avec les valeurs obtenues précédemment sur l'interface OVH. Pour l'API Endpoint, choisissez "OVH Europe" dans le cas où vous êtes un client OVH européen.
Validez tout en bas de la page. Une fois de retour sur la page certificat, demandé un renouvelle du certificat. L'opération va prendre 1 minute environ, car ACME va lui-même s'occuper de la création d'un enregistrement DNS temporaire, le temps que le certificat soit récupéré. Pendant ce processus, il va automatiquement attendre de voir si Let's Encrypt parvient à lire l'enregistrement DNS. On peut voir plusieurs étapes dans les logs qui s'affichent :
Checking authentication Consumer key is ok. Adding record Added, sleep 10 seconds. The txt record is added: Success. Let's check each DNS record now. Sleep 20 seconds first Not valid yet, let's wait 10 seconds and check next one. Domain it-connect.tech '_acme-challenge.it-connect.tech' success. All success, let's return Removing DNS records
Etc... Puis le certificat s'affiche dans la console et les fichiers sont stockés sur votre pare-feu ! Voilà, le certificat SSL Let's Encrypt sera renouvelé automatiquement !
Merci Florian pour ce beau TUTO.
A savoir, sur PFSENSE plus 23.05, le renouvellement des certificats peut etre rendu impossible si ceux ci sont en cours d’utilisation par un service (SQUID, DNS RESOLVER…). Vous pouvez alors contrôler le ou les services dans lesquels ce certificat est utilisé en regardant la valeur de la colonne « In Use » correspondant à votre certificat ACME, à partir de la page System/Cert Manager / Certificates.
Retirer votre certificat en le remplaçant par un autosigné dans chacun des services ou il est utilisé.
Vous pourrez alors renouveler votre certificat.
A l’issue, vous pourrez à nouveau l’utiliser dans les différents services.
Merci pour ton aide!