16/12/2024

pfSense

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".

OVH API Let's Encrypt

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.

PfSense ACME OVH API

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 !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “PfSense : renouveler le certificat Let’s Encrypt avec l’API OVH

  • 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.

    Répondre
  • Bonjour,
    Et merci pour ce Tuto.
    Question :
    J’ai lu dans un autre de vos tuto, qu’il fallait créer aussi le certificat pour « *.mondomaine.fr » (fr pour l’exemple).
    Est-ce toujours le cas ou cette solution permet de faire les deux en une fois ?
    Patrice.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.