Configurer Stunnel pour la première fois peut s’avérer complexe, surtout si vous n’êtes pas familier avec les protocoles SSL/TLS ou la gestion des certificats. C’est un outil puissant mais capricieux : une simple faute de frappe ou un fichier manquant, et la connexion est impossible ou un message d’erreur obscur apparaît. La configuration nécessite parfois quelques essais, notamment sous Windows où les permissions et les pare-feu peuvent engendrer des problèmes inattendus. Mais une fois configuré, Stunnel offre une solution fiable pour sécuriser les applications ou services anciens ne prenant pas en charge le chiffrement nativement, sans avoir recours à un VPN complet. Ce guide vous accompagne dans l’installation et la configuration d’un serveur et d’un client simples, avec authentification par certificat et chiffrement TLS, pour sécuriser votre trafic en toute simplicité.
Comment configurer Stunnel et le faire fonctionner correctement
Utilisation de Stunnel sous Windows : Comment faire fonctionner correctement le serveur
Cette section explique comment configurer Stunnel en tant que serveur : la configuration principale qui lui permet d’écouter les connexions chiffrées entrantes et de les rediriger en interne. La difficulté réside parfois dans le pare-feu Windows, la méthode de génération des certificats, ou tout simplement dans l’oubli d’indiquer les bons fichiers de configuration. L’essentiel est de configurer correctement le serveur et d’ouvrir le port (par exemple, le port 443 pour HTTPS) dans le pare-feu Windows, car, comme toujours, Windows complique inutilement les choses.
Téléchargez le programme d’installation, puis, lors de son exécution, choisissez les options par défaut ; cela inclut l’installation openssldes outils nécessaires à la génération des certificats. Ensuite, ouvrez une invite de commandes avec les droits d’administrateur, puis accédez à `c:\Program Files (x86)\stunnel\bin`, car c’est là que se trouvent les fichiers binaires OpenSSL permettant de créer les clés et les certificats.
- Générer la clé privée de l’autorité de certification :
openssl genpkey -algorithm RSA -out ca.key. Aucun mot de passe n’est requis, car il s’agit simplement d’une autorité de certification racine. - Créez le certificat d’autorité de certification :
openssl req -new -x509 -key ca.key -out ca.crt -subj "/O=woshubLTD/OU=IT/CN=CA_webserver1.com". Assurez-vous que les informations relatives à votre sujet sont suffisamment descriptives pour permettre d’identifier cette autorité de certification ultérieurement. - Générez la clé privée du serveur :
openssl genpkey -algorithm RSA -out server.key. - Créez une CSR pour le serveur :
openssl req -key server.key -new -out server.csr. - Signez cette CSR avec votre CA :
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -subj "/O=woshubLTD/OU=IT/CN=server_webserver1.com". Ce certificat peut désormais être utilisé pour HTTPS à l’intérieur de votre tunnel. - Procédez de manière similaire pour un certificat client : générez une clé client (
openssl genpkey -algorithm RSA -out client.key), une CSR, puis signez-la avec votre CA.
Copiez maintenant l’autorité de certification, les certificats du serveur et les clés privées dans `C:\Program Files (x86)\stunnel\config`. Par exemple : ca.crt, server.crt, et server.key. Vous pouvez effectuer un test rapide en modifiant le fichier stunnel.conf.
; Basic log info, helps with debugging debug = info output = stunnel.log ; Encryption stuff, tweak if needed options = CIPHER_SERVER_PREFERENCE options = NO_SSLv2 options = NO_SSLv3 options = NO_TLSv1 sslVersion = TLSv1.2 sslVersion = TLSv1.3 ciphers = ECDHE-RSA-AES256-GCM-SHA384 ; Paths to certs cert = server.crt key = server.key CAfile = ca.crt ; The actual tunnel service setup — replace IPs and ports as needed [ITPortal] accept = 192.168.158.144:443 connect = 127.0.0.1:80 verify=2
Assurez-vous que le port (par exemple, le port 443) n’est pas utilisé par un autre programme. Ouvrez ensuite ce port dans le Pare-feu Windows Defender. Vous pouvez le faire avec une commande PowerShell comme :
New-NetFirewallRule -DisplayName "ITPortal_stunnel_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
C’est quasiment indispensable ; sinon, les connexions seront tout simplement bloquées.
Lancez Stunnel GUI une seule fois dans votre configuration pour vérifier les erreurs — si tout est correct, fermez-le, ouvrez une invite de commandes en tant qu’administrateur et installez-le en tant que service :
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install "C:\Program Files (x86)\stunnel\config\stunnel.conf"
Ensuite, lancez-le avec :
Start-Service wrapper
Cela permettra à votre wrapper TLS de s’exécuter en arrière-plan, à l’écoute sur le port 443. Plutôt simple, non ? Presque… Si vous rencontrez des erreurs ou si la connexion échoue, consultez le fichier journal stunnel.logpour identifier le problème. Il peut s’agir d’une faute de frappe, d’un fichier manquant ou d’un problème de pare-feu.
Faire correspondre le client au serveur
La configuration du client est similaire, mais généralement plus simple. Installez Stunnel, copiez le certificat de l’autorité de certification ( https://github.com/memstechtips/Winhance ) et les certificats clients dans `C:\Program Files (x86)\stunnel\config`. Ensuite, modifiez la configuration :
[ITPortal] client = yes accept = localhost:8080 connect = 192.168.158.144:443 CAfile = ca.crt cert = client.crt key = client.key verify=2
Exécutez Stunnel sur le client ; lorsque vous accéderez à l’adresse avec votre navigateur localhost:8080, la connexion sera redirigée de manière sécurisée vers le serveur distant. Si nécessaire, vous pouvez également regrouper le certificat et la clé du client dans un seul fichier PEM (par exemple, via `stunnel.pmail.py` Get-Content client.key, client.crt | Set-Content client.pem), puis y accéder directement cert = client.pem. N’oubliez pas que si vous exécutez ce service ultérieurement, les mêmes certificats devront être accessibles et les permissions correctement configurées.
Dernière chose : si vous devez révoquer un certificat compromis, ajoutez l’ option CRLpath pointant vers le dossier contenant vos listes de révocation de certificats. Pour des configurations plus avancées, consultez ce dépôt GitHub pour découvrir des astuces d’automatisation et d’autres secrets de configuration.
Et voilà. La configuration initiale demande un peu de temps, mais une fois en place, Stunnel peut s’avérer indispensable pour chiffrer des services existants ou créer rapidement des tunnels sécurisés sans avoir recours à des VPN complets.
Résumé
- Tous les certificats et clés ont été générés avec OpenSSL, sans grande surprise.
- J’ai configuré stunnel.conf avec soin, en faisant attention aux chemins et aux ports.
- Configurez les règles de pare-feu entrantes afin qu’aucun obstacle ne bloque votre tunnel.
- J’ai démarré le service et vérifié les journaux pour détecter les erreurs — c’est généralement là que l’on trouve les erreurs de configuration.
- Testé avec un navigateur ou curl et vérifié que le trafic était bien crypté sur le réseau.
Conclure
Configurer Stunnel sans encombre demande un peu de patience, mais une fois opérationnel, c’est une solution fiable pour chiffrer le trafic sur les serveurs anciens ou les applications ne prenant pas en charge les normes TLS modernes. L’essentiel est de maintenir la chaîne de certificats correcte et de vérifier scrupuleusement les règles du pare-feu. En cas d’erreur, les journaux sont généralement la meilleure source d’information ; parfois, un redémarrage du service après modification est nécessaire. Espérons que cela permettra à certains de gagner du temps, ou du moins d’éviter la panique lorsque la configuration ne fonctionne pas du premier coup.