Verschlüsseln Sie alle Client-Server-App-App-Datenverkehr unter Windows mit Stunnel

/de/images/install-stunnel-on-windows.png

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.

/de/images/install-stunnel-on-windows.png

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.

/de/images/generate-stunnel-certificates.png

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 /de/images/stunnel-server-connection-log-on-windows.png

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.

/de/images/install-stunnel-tls-wrapper-service-on-windows.png

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.

/de/images/stunnel-redirect-traffic-by-creating-a-secure-tls.png

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

/de/images/stunnel-exe-install-run-client-on-windows.png

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,