Vous êtes sur la page 1sur 25

27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Utiliser HAProxy et Let’s Encrypt sur un firewall OPNsense


pour renouveller des certificats SSL

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 1/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 2/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Il existe un plugin pour HAProxy et Let’s Encryptpour OPNSense, j’ai eu l’occasion de tester cette combinaison avec Exchange
2016. Ainsi, OPNSense peut directement demander un certificat gratuit à Let’s Encrypt, puis s’occuper lui-même du
renouvellement. A savoir que les certificats gratuits de Let’s Encrypt sont valables 90 jours.

A propos d’OPNsense

OPNsense est un logiciel de routage et de pare-feu basé sur FreeBSD et à code source ouvert développé par Deciso, une société
néerlandaise qui fabrique du matériel et vend des packages de support pour OPNsense. OPNsense un fork de pfSense construit sur
FreeBSD, ce qui signifie que si vous connaissez déjà un peu pfsense, vous ne serez pas perdu avec OPNsense. Personnellement, je
préfère OPNSense, l’interface graphique est plus ordonnée, il existe une API REST et les principaux plugins sont également
disponibles.

HAProxy est quand a lui un logiciel gratuit et Opensource qui fournit un équilibreur de charge et un serveur proxy haute
disponibilité pour les applications TCP et HTTP qui répartissent les demandes sur plusieurs serveurs. Il est écrit en C et a la
réputation d’être rapide et efficace.

Dans ce tutoriel, nous allons voir comment paramétrer OPNsense afin d’utiliser HAProxy comme reverse proxy et ainsi renouveler
automatiquement les certificats SSL.

Pare-feu gratuit et certificats gratuits, ça sonne bien. Alors c’est parti !

Adressage utilisé pour ce tutoriel

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 3/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Le serveur web est situé dans la dmz : 10.158.1.10

Configuration d’OPNsense

Si vous avez besoin d’aide pour installer OPNsense, rendez-vous sur mon tutoriel ici.

Après avoir installé et intégré notre réseau, nous allons d’abord modifier le port de l’interface web d’OPNsense. L’interface web est
configurée par défaut sur le port 443 (HTTPS) et comme nous voulons créer et utiliser un certificat SSL, nous allons réserver le
port 443 pour Exchange. Ici, j’ai choisi le port 4444 pour être tranquille, mais libre a vous de choisir le port de votre choix.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 4/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Rendez-vous à l’adresse suivante pour accéder à l’interface web : https://ip-opnsense:4444


Dans mon cas, je me rends donc à l’adresse suivante : https://192.168.1.1:4444

Maintenant que nous avons modifié le port de l’interface web, il faut installer les différents plugins dont nous avons besoin : 
– os-acme-client est le plugin pour Let’s Encrypt.

– os-haproxy est le plugin pour HAProxy.

Il faut maintenant créer les règles de filtrage pour accepter le trafic sur le port 80 et 443 depuis l’extérieur vers notre pare-feu. Pour
cela, commencez par créer une règle autorisant le trafic sur le port 80 de l’interface WAN.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 5/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Répétez l’opération pour le port 443. Vous devriez avoir ces deux règles :

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 6/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Configuration d’HAProxy

Nous allons maintenant configurer HAProxy pour écouter sur notre IP publique (10.0.2.15 dans mon cas) et rediriger les requêtes
sur notre serveur Exchange (10.158.1.10 dans mon cas).

On commence d’abord par renseigner les paramètres de notre serveur Exchange.


Rendez-vous dans Services: HAProxy: Settings: Real Servers et ajoutez votre
serveur Exchange en cliquant sur le petit « + »
situé à droite.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 7/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

C’est dans cette section que nous allons ajouter notre serveur Exchange.
Nous allons cocher la case « SSL » mais pas « Verify SSL Certificate »
puisque nous allons utiliser un certificat auto-signé.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 8/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Dans mon cas, je renseigne l’adresse de mon serveur Exchange situé dans la DMZ : 10.158.1.10.
Cliquez sur « save » et vous devriez a présent voir votre serveur Exchange.

N’oubliez pas de cliquer sur « apply » afin d’appliquer les changements !

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 9/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Une fois que l’on a renseigné notre serveur, nous pouvons maintenant créer un backend.
Rendez-vous dans Services: HAProxy: Settings: Virtual Services: Backend Pools et créez un backend.

On indique seulement le serveur utilisé et on laisse les options par défaut.


On valide et on applique les modifications.

Nous allons maintenant créer une condition dans Services: HAProxy: Settings: Rules & Checks: Conditions.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 10/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On crée la condition comme ça et on valide.

Cette condition va maintenant nous servir à créer une règle, pour ça, on se rend dans Services: HAProxy: Settings: Rules &
Checks: Rules.
https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 11/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Il faut maintenant créer un frontend, pour cela, on se rend dans Services: HAProxy: Settings: Virtual Services: Public services.
C’est ici que vous allez renseigner l’adresse publique sur laquelle Exchange doit être accessible depuis l’extérieur. Nous activons

le mode SSL et on renseigne le certificat par défaut d’OPNsense. On applique également la règle créée plus tôt et on valide.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 12/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 13/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On y est presque ! Nous allons maintenant activer HAProxy dans Services: HAProxy: Settings: Settings: Service Settings.
Pour les petits malins qui avaient déjà activé HAProxy, je vous conseille de redémarrer le service.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 14/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

À ce stade, en vous rendant sur votre nom de domaine utilisé pour Exchange, vous devriez voir qu’il dispose bien d’un certificat
mais que celui-ci n’est pas valide. En effet, c’est un certificat fourni par OPNsense.
Vous devriez avoir un certificat similaire à celui-ci :

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 15/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Configuration de Let’s Encrypt

Let’s Encrypt offre la possibilité de tester l’intégration des certificats via « Staging environment » . Il faut savoir que Let’s
Encrypt applique des limitations pour l’émission des certificats valides, ce qui fait que seul un nombre limité de certificats peuvent
être émis. En effet, comme nous n’avons pas encore notre certificat, il est donc logique de commencer par l’environnement de test
et de basculer vers l’environnement de production une fois que tout fonctionnera. On sélectionne donc « Staging Environment » ,
on active le plugin, on active l’intégration d’HAProxy et on clique sur « Apply » .

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 16/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On va maintenant créer un compte, pour ce faire, on se rend dans Services: Let’s Encrypt: Accounts.
C’est ici que nous allons remplir les informations qui vont être utilisées pour le certificat.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 17/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On se rend maintenant dans Services: Let’s Encrypt: Accounts : Validation Methods.


On laisse HTTP-01, on sélectionne HAProxy Frontend integration et on sélectionne notre frondend.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 18/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Nous allons maintenant nous rendre dans la section « Certificats » pour éditer le certificat.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 19/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On clique sur « Issue/Renew Certificate » pour créer notre certificat. Normalement, vous devriez obtenir une erreur car la
vérification du domaine à échoué. 
C’est normal, nous avons configuré
Exchange pour écouter sur le port 443 (HTTPS), mais Let’s Encrypt vérifie le domaine à l’aide
de la méthode de validation HTTP-01, qui se fait sur le port 80 (HTTP). 

On va donc créer un frontend supplémentaire qui lui écoutera sur le port 80 (HTTP) afin que Let’s Encrypt puisse vérifier le
domaine.

Validation du domaine

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 20/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

On retourne donc dans Services: HAProxy: Settings: Virtual Services: Public services et on crée un nouveau frontend sans
oublier de cliquer sur « Apply » une fois fini.
En activant l’intégration d’HAProxy dans Let’s Encrypt, celui-ci a créé une règle dans HAProxy qui se nome
« redirect_acme_challenge » . C’est cette règle qui va permettre a Let’s Encrypt de valider notre domaine.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 21/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Maintenant la vérification doit pouvoir s’effectuer correctement. On retourne donc a l’onglet « Certificates » du plugin Let’s
Encrypt et on réessaye de valider le domaine.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 22/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Si tout ce passe bien, vous devriez voir apparaître un « OK » sous Last Acme Status. Vous pouvez désormais vérifier que votre
certificat est bien présent dans System: Trust: Certificates.

Passage en environnement de production

Tout fonctionne, il ne reste plus qu’a passer sur l’environnement de production et remplacer notre ancien certificat par notre
certificat tout frais. 

On commence par sélectionner l’environnement de production dans Services: Let’s Encrypt: Settings

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 23/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Une fois en production, il est nécessaire de faire revalider le certificat. On retourne donc sur l’onglet « Certificates » et on
demande à nouveau de valider le domaine.

Dernière étape : Remplacer le certificat

Rendez-vous maintenant dans Services: HAProxy: Settings: Virtual Services: Public Services. 


Sélectionnez votre frontend qui écoute sur le port 443 et édité ses paramètres. Supprimez l’ancien
certificat et sélectionnez le
nouveau à la place et validez les modifications.

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 24/25
27/08/2021 Utiliser HAProxy et Let's Encrypt sur un firewall OPNsense

Conclusion

Et voilà ! 

votre nom de domaine dans un navigateur, vous pouvez constater que votre site possède désormais un magnifique
Si vous tapez
certificat signé par Let’s Encrypt !
N’oubliez pas de configurer les logs
d’HAProxy dans OPNsense afin de pouvoir retracer les connexions sur votre frontend.

Si vous rencontrez des problèmes n’hésitez pas a les partager dans les commentaires !

https://www.redshieldguardian.com/tutoriels/utiliser-haproxy-et-lets-encrypt-sur-un-firewall-opnsense-pour-renouveller-des-certificats-ssl/ 25/25