Hoe versleutel je client-server applicatieverkeer op Windows met Stunnel?

Het instellen van Stunnel kan voor de eerste keer best lastig zijn, vooral als je niet zo bekend bent met SSL/TLS of certificaten. Het is een van die krachtige, maar ook nogal kieskeurige tools – een typefout of een ontbrekend bestand kan ervoor zorgen dat de verbinding niet tot stand komt of dat er een onduidelijke foutmelding verschijnt. Soms is het configureren een kwestie van uitproberen, met name op Windows waar machtigingen en firewalls onverwachte problemen kunnen veroorzaken. Maar als het eenmaal werkt, heb je een solide manier om die oudere apps of services te beveiligen die van nature geen encryptie ondersteunen, zonder een volledige VPN te hoeven gebruiken. Deze handleiding beschrijft de installatie en configuratie van een eenvoudige server en client, met certificaatverificatie en TLS-encryptie, zodat je zonder al te veel gedoe je verkeer kunt beveiligen.

Hoe je de Stunnel-installatie kunt herstellen en soepel kunt laten werken

Stunnel gebruiken op Windows: ervoor zorgen dat de server goed samenwerkt

Dit gedeelte gaat over het configureren van Stunnel als server – de belangrijkste instelling waarbij het luistert naar inkomende versleutelde verbindingen en deze intern doorstuurt. De reden dat dit soms lastig kan zijn, is dat de Windows-firewall of de manier waarop certificaten worden gegenereerd problemen kan veroorzaken, of dat je simpelweg vergeet naar de juiste bestanden te verwijzen. De sleutel is om de configuratie correct in te stellen en de poort (zoals 443 voor HTTPS) te openen in de Windows-firewall, want Windows maakt het natuurlijk onnodig moeilijk.

Download het installatieprogramma en kies bij het uitvoeren ervan de standaardopties. Dit omvat het installeren van opensslde tools die u nodig hebt om alle certificaten te genereren. Open vervolgens een opdrachtprompt met beheerdersrechten en navigeer naar `c:\Program Files (x86)\stunnel\bin`, want daar bevinden zich de OpenSSL-binaries voor het aanmaken van sleutels en certificaten.

  • Genereer een privésleutel voor de CA: openssl genpkey -algorithm RSA -out ca.key. Geen wachtwoord nodig, want dit is gewoon een root-CA.
  • Maak het CA-certificaat aan: openssl req -new -x509 -key ca.key -out ca.crt -subj "/O=woshubLTD/OU=IT/CN=CA_webserver1.com". Zorg ervoor dat uw onderwerpgegevens voldoende beschrijvend zijn om deze CA later te kunnen identificeren.
  • Genereer de privésleutel van de server: openssl genpkey -algorithm RSA -out server.key.
  • Maak een CSR aan voor de server: openssl req -key server.key -new -out server.csr.
  • Onderteken die CSR bij uw 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". Dit certificaat kan nu worden gebruikt voor HTTPS binnen uw tunnel.
  • Volg vergelijkbare stappen voor een clientcertificaat: genereer een clientsleutel ( openssl genpkey -algorithm RSA -out client.key), een CSR en onderteken deze vervolgens met uw CA.

Kopieer nu de CA-, servercertificaten en privésleutels naar `C:\Program Files (x86)\stunnel\config`. Bijvoorbeeld: ca.crt, server.crt, en server.key. Je kunt eventueel een snelle test uitvoeren door stunnel.conf te bewerken.

; 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 

Zorg ervoor dat de poort (bijvoorbeeld 443) niet door iets anders wordt gebruikt. Open die poort vervolgens in Windows Defender Firewall. Je kunt dit doen met een PowerShell-opdracht zoals:

New-NetFirewallRule -DisplayName "ITPortal_stunnel_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow

Dit is eigenlijk noodzakelijk; anders worden verbindingen gewoon geblokkeerd.

Start de Stunnel GUI eenmalig in je configuratie om te controleren op fouten. Als alles in orde is, sluit je de GUI, open je een opdrachtprompt als beheerder en installeer je de GUI als een service.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install "C:\Program Files (x86)\stunnel\config\stunnel.conf"

Start het vervolgens op met:

Start-Service wrapper

Hierdoor zal uw TLS-wrapper op de achtergrond draaien en luisteren op poort 443. Simpel genoeg, toch? Nou, bijna — als u fouten ziet of als de verbinding niet tot stand komt, controleer dan het logbestand stunnel.logom te zien wat er mis is. Soms is het een typefout, een ontbrekend bestand of een firewallprobleem.

De clientzijde afstemmen op de server

De clientconfiguratie is vergelijkbaar, maar over het algemeen minder omslachtig. Installeer Stunnel, kopieer het CA-certificaat ( https://github.com/memstechtips/Winhance ) en de clientcertificaten naar `C:\Program Files (x86)\stunnel\config`. Pas vervolgens de configuratie aan:

[ITPortal] client = yes accept = localhost:8080 connect = 192.168.158.144:443 CAfile = ca.crt cert = client.crt key = client.key verify=2 

Start Stunnel op de client en wanneer u uw browser naar laat verwijzen localhost:8080, wordt u veilig doorgestuurd naar de externe server. Indien nodig kunt u het clientcertificaat en de sleutel ook bundelen in één PEM-bestand (bijvoorbeeld via Get-Content client.key, client.crt | Set-Content client.pem), en vervolgens verwijzen naar cert = client.pem. Houd er rekening mee dat als u dit later als een service uitvoert, dezelfde certificaten toegankelijk moeten zijn en de juiste machtigingen moeten zijn ingesteld.

Tot slot: als u een gecompromitteerd certificaat moet intrekken, voeg dan de CRLpath -optie toe die verwijst naar de map met uw certificaatintrekkingslijsten. Voor meer geavanceerde configuraties kunt u deze GitHub-repository raadplegen voor automatiseringstips en meer configuratiegeheimen.

En dat is het zo’n beetje. Het is even puzzelen om alles goed in te stellen, maar als het eenmaal werkt, kan Stunnel een redder in nood zijn voor het versleutelen van verouderde services of het snel opzetten van veilige tunnels zonder gedoe met volledige VPN’s.

Samenvatting

  • Alle certificaten en sleutels zijn gegenereerd met OpenSSL, geen grote verrassingen daar.
  • Ik heb stunnel.conf zorgvuldig geconfigureerd, met aandacht voor paden en poorten.
  • Stel inkomende firewallregels in zodat niets uw tunnel blokkeert.
  • Ik heb de service gestart en de logbestanden gecontroleerd op fouten; daar vind je meestal de verkeerde configuraties.
  • Getest met een browser of curl en ervoor gezorgd dat het verkeer tijdens de overdracht versleuteld was.

Samenvatting

Het kost wat geduld om Stunnel zonder problemen aan de praat te krijgen, maar als het eenmaal werkt, is het een behoorlijk solide oplossing voor het versleutelen van verkeer op oudere servers of applicaties die de moderne TLS-standaarden niet ondersteunen. De sleutel is om de certificaatketen correct te houden en de firewallregels goed te controleren. Als je fouten tegenkomt, zijn de logbestanden meestal je beste bron van informatie – en soms is het nodig om de service na wijzigingen opnieuw op te starten. Hopelijk bespaart dit iemand een paar uur, of voorkomt het in ieder geval paniek als dingen niet meteen werken.