
Das Stunnel-Tool kann als Proxy-Dienst verwendet werden, um einen sicheren TLS-Tunnel für Client-Server-Netzwerk-Apps zu erstellen, die die Verschlüsselung nicht unterstützen. In einigen Fällen ist es vorzuziehen, dieses Tool zu verwenden, um den Remote-Zugriff auf eine einzelne App (Service) zu sichern, anstatt eine vollen VPN-Lösung zu implementieren.
Der
Stunnel
Der Service kann im Server- oder Client -Modus ausgeführt werden. Im Client -Modus empfängt Stunnel den Datenverkehr aus der Client -App, verschlüsselt sie und sendet ihn dann an den Server. Der Verkehr wird auf der entschlüsselt
Stunnel Server-Seite
und dann an die Ziel -App oder -Dienst gesendet. Das Wichtigste ist, dass der Administrator
Ich muss weder den Client noch den Serverteil der App ändern.
Zertifikate
kann zur Clientauthentifizierung verwendet werden. Stunnel wird sowohl für Windows als auch für Linux unterstützt.
Schauen wir uns an, wie Sie mit Stunnel einen sicheren Zugriff zwischen dem Client und dem Server erstellen können. In diesem Beispiel ist der Server ein Windows -Host mit einem IIS -Webserver, der eine unverschlüsselte HTTP -Site ausführt. Die Aufgabe besteht darin, den Zugriff auf diese Website von Clients mit Zertifikatauthentifizierung einzuschränken und die Verkehrsverschlüsselung zu ermöglichen.
Konfigurieren von Stunnel Server unter Windows
Laden Sie das Stunnel -Installationsprogramm für Windows von
https://www.stunnel.org/downloads.html herunter und installieren Sie ihn mit den Standardeinstellungen, einschließlich openssl.

Der nächste Schritt besteht darin, Schlüssel und Zertifikate für CA, Server und Clients zu generieren. Öffnen Sie eine Eingabeaufforderung und navigieren Sie zum Verzeichnis:
CD" C: \ Programme (x86) \ Stunnel \ bin " `
CA -Schlüssel erzeugen:
OpenSSL Genpkey-Algorithmus rsa-out ca.Key
In diesem Fall verwenden wir keine Kennwortphrase, um den privaten Zertifikatschlüssel zu schützen.
Erstellen Sie ein CA -Zertifikat:
openssl req-new-x509-key ca.key-out ca.crt-subj" /o=woshubltd/ou=it/cn=ca\_webserver1.com "
Fügen Sie Informationen zum Zertifikat im Feld SubJ hinzu, um eine einfache Identifizierung zu erhalten.
Erstellen Sie einen privaten Schlüssel für den Server:
OpenSSL Genpkey-Algorithmus RSA-Out Server.Key
Erstellen Sie eine Zertifikatsignalanforderung (CSR):
OpenSSL Req-Key Server.Key-New-Out Server.csr
Verwenden Sie die Root CA, um das Serverzertifikat zu unterschreiben.
`openSSL x509-req-in Server.csr-ca ca.crt-cakey ca.key-cacreateSerial-out server
Erstellen Sie nun einen privaten Schlüssel für den Kunden:
OpenSSL Genpkey-Algorithmus RSA-Out Client.Key
Erstellen Sie eine Anfrage für ein Client -Zertifikat:
OpenSSL REQ-KEY CLESSION.Key-New-Out Client.csr
Unterschreiben Sie das Client -Zertifikat:
`OpenSSL X509-REQ-In Client
Kopieren Sie auf dem Webserver die Dateien Ca.Crt, Server.crt und Server.Key in den Ordner “C: \ Programme” (x86) \ Stunnel \ config.

Bearbeiten Sie die Datei von Stunnel.conf (Sie können die Standardeinstellungen löschen) und fügen Sie die folgende Konfiguration hinzu:
; Write logs to stunnel.logdebug = infooutput = stunnel.log; Strong encryption settings. We assume that both devices have modern CPUs that support AES hardware acceleration. If such encryption settings cause server performance degradation under heavy traffic, you can simplify them.options = CIPHER_SERVER_PREFERENCEoptions = NO_SSLv2options = NO_SSLv3options = NO_TLSv1sslVersion = TLSv1.2sslVersion = TLSv1.3ciphers = ECDHE-RSA-AES256-GCM-SHA384; names (paths) to certificate filescert = server.crtkey = server.keyCAfile = ca.crt; This section contains the configuration of the service that the client will access via Stunnel.ITPoral; This is the IP address and port on which the Stunnel instance should listen for connections.accept = 192.168.158.144:443; or accept = 443; The IP address and port of the service to which the connection should be redirected. In our case, this is a local HTTP site.connect = 127.0.0.1:80; or connect = 80; Always check the remote computer's client certificate. Clients without a certificate will not be able to connect to the service.verify=2
Öffnen Sie den angegebenen Port in Windows Defender Firewall, um eingehende Verbindungen zu ermöglichen. Sie können eine Firewall -Regel mit PowerShell erstellen.
`New-Netfirewallrule-DisplayName" Itporal_stunnel_443 “-Rection Inbound-Localport 443-Protocol TCP-Action zulassen” ""
Blockieren Sie die externen Verbindungen zum unsicheren TCP -Port 80 auf der Ebene von Router oder Firewall.
Führen Sie Stunnel.exe und überprüfen Sie die GUI -Protokolle, um sicherzustellen, dass Ihre Konfiguration keine Fehler enthält. Die grafische Schnittstelle ermöglicht das schnelle Neulesen der Konfigurationsdatei und sofort die Fehlerprotokolle anzeigen, was das Debugging erleichtert.
1 
Schließen Sie die GUI von Stunnel.exe, indem Sie im Menü enden und dann Stunnel als Windows -Service starten. Führen Sie den Befehl aus:
" C: \ Programme (x86) \ Stunnel \ bin \ stunnel.exe "-Install" C: \ Programme (x86) \ Stunnel \ config \ stunnel.conf " `
Der Stunnel TLS -Wrapper -Service wird erstellt. Starten Sie es:
Start-Service-Wrapper
Der Stunnel -Prozess hört auf Port 443 zu, sobald er gestartet wurde.

Stunnel Client -Konfigurationsbeispiel unter Windows
Installieren Sie dann Stunnel aus derselben Verteilung auf dem Client Windows -Gerät. Kopieren Sie dann die Dateien ca.crt, client.crt und client.key vom Server in den Ordner “C: \ Programme” (x86) \ Stunnel \ config.
Fügen Sie der Konfigurationsdatei von Stunnel.conf Folgendes hinzu:
ITPoral; Run Stunnel in the client mode.client = yes; Specify the IP address and TCP port through which your service will be accessible to your clients.accept = localhost:8080; the address of the stunnel server to redirect connections toconnect = 192.168.158.144:443; certificate pathsCAfile = ca.crtcert = client.crtkey = client.key; Certificates must be checked explicitly when establishing a connection.verify=2
Speichern Sie die Konfigurationsdatei. Führen Sie zunächst Stunnel manuell aus und überprüfen Sie die Protokolle auf Fehler. Wenn Sie nun auf die Adresse `localhost: 8080 aus dem Browser zugreifen, leitet Stunnel die Verbindung zum Remote -Server um.

Für den Einfachheit halber können Sie Zertifikate und Schlüssel in einer einzigen Datei kombinieren. Zum Beispiel:
Get-Content Client.Key, Client.crt | Set-content client.pem
Geben Sie in diesem Fall nur in der Stunnel -Konfigurationsdatei Folgendes an:
cert = client1.pem
Wenn alles ordnungsgemäß funktioniert, können Sie Stunnel auf einen Kunden als Service ausführen.
Stunnel.exe-install

Um Zertifikate zu widerrufen (beispielsweise kompromittierte), fügen Sie die CRLPath -Option zur Stunnel Server -Konfiguration hinzu. Geben Sie den Pfad zum Ordner an, in dem die widerrufenen Zertifikate (Zertifikat-Widerrufslisten) im PEM -Format gespeichert sind.
Sie können auch die Option Capath verwenden, um den Speicherort des Ordners mit den zulässigen Zertifikaten anzugeben.
*️⃣ Quellverknüpfung:
https://www.stunnel.org/downloads.html, erstellen Sie eine Firewall -Regel mit Powershell,