Dies ist ein Mirageos Unikernel, der TLS-Verbindungen über die öffentliche Netzwerkschnittstelle (Service) auf Frontend-Port annimmt und sie mit TCP über die private Netzwerkschnittstelle zum Backend-IP- und Backend-Port übernimmt. Ein Client, der sich mit TLstunnel verbindet, muss eine TLS -Verbindung herstellen, die die Nutzlast über TCP an den Backend -Dienst weitergeleitet wird.
TLstunnel kann zum Lastausgleich verwendet werden-mit mehreren Tlstunnel an der Frontend führt teure Krypto-Operationen (Asymmetrics TLS Handshakes und symmetrische Kryptographie) mit einem einzelnen (oder mehreren) Backend-Service, das über TCP kommuniziert, durch.
Sicher, was nur der tlstunnel ist, benötigt Zugang zum privaten Schlüssel des X.509-Zertifikats. Wenn TLStunnel für die Client -Authentifizierung konfiguriert ist, können nur gültige Clients auf den Backend -Service zugreifen und die Angriffsfläche drastisch einschränken.
Für die Ausführung von Tlstunnel sind zwei IP -Adressen erforderlich: Eine ist die Öffentlichkeit, mit der der andere im privaten Netzwerk steht (wobei TCP -Verbindungen weitergeleitet werden). Die Konfiguration kann über ein Befehlszeilen-Dienstprogramm im privaten Netzwerk erfolgen. Das X.509-Zertifikat sollte über DNS verfügbar sein (siehe DNS-Primary-Git- und DNS-LetSencrypt-Sekundär).
Betrachten wir, dass Ihre öffentliche IP -Adresse 1.2.3.4/24 ist (mit Standard -Gateway 1.2.3.1). Sie verwenden 192.168.0.4/24 als Ihr privates Netzwerk. Ihr DNS -Server ist 1.2.3.5 mit dem Schlüssel tlstunnel._update.example.org.
Tlstunnel beginnen:
$ truncate -s 1m /var/db/tlstunnel
$ solo5-hvt --net:service=tap0 --net:private=tap10 --block:storage=/var/db/tlstunnel --
tlstunnel/unikernel/dist/tlstunnel.hvt --ipv4=1.2.3.4/24 --ipv4-gateway=1.2.3.1
--private-ipv4=192.168.0.4/24 --domains=example.org
--dns-server=1.2.3.5 --dns-key=tlstunnel._update.example.org:SHA256:m2gls0y3ZMN4DVKx37x/VoKEdll4J2A9qNIl6JIz2z4=
--key-seed=ROkD8o/Xrc4ScDdxM8cV1+4eQiWUEul+3I1twW+I15E=
--key=9Fe92fogykIAPBJZU4FUsmpRsAy6YDajIkdSRs650zM=
Sobald Tlstunnel über DNS ein Zertifikat erhalten hat, können Sie bereits eine Verbindung zu https://1.2.3.4 herstellen und sollten das Zertifikat anzeigen:
$ openssl s_client -connect 1.2.3.4:443
$ curl https://1.2.3.4
Um die Weiterleitung von Tlstunnel zu konfigurieren, wobei ein bestimmter Hostname an eine IP-Adresse und ein Portpaar weitergeleitet wird, müssen Sie den Binary tlstunnel-client
vom client
Unterordner verwenden. Die Kommunikation wird unter Verwendung des gemeinsamen geheimen Geheimnisses authentifiziert, der an Tlstunnel übergeben wurde ( --key=secret
).
Die Konfiguration wird im Blockgerät aufbewahrt (auf eine robuste Art und Weise, dh bei Änderung zuerst werden die neuen Daten geschrieben und danach sind die Superblock -Aktualisierungen).
$ cd tlstunnel/client
$ dune build
# Listing all configured hostnames:
$ _build/install/default/bin/tlstunnel-client list --key=9Fe92fogykIAPBJZU4FUsmpRsAy6YDajIkdSRs650zM= -r 192.168.0.4:1234
# Adding a new forward:
$ _build/install/default/bin/tlstunnel-client add --key=9Fe92fogykIAPBJZU4FUsmpRsAy6YDajIkdSRs650zM= -r 192.168.0.4:1234 test.example.org 192.168.0.42 80
# Removing a foward:
$ _build/install/default/bin/tlstunnel-client remove --key=9Fe92fogykIAPBJZU4FUsmpRsAy6YDajIkdSRs650zM= -r 192.168.0.4:1234 test.example.org
Um dieses Unikernel aus der Quelle zu installieren, müssen Sie OPAM (> = 2.0.0) und OCAML (> = 4.08.0) installiert haben. Außerdem ist Mirage erforderlich (> = 4.5.0). Bitte befolgen Sie die Installationsanweisungen.
Die folgenden Schritte klonen dieses Git -Repository und erstellen den Unikernel:
$ git clone https://github.com/robur-coop/tlstunnel.git
$ cd tlstunnel/unikernel && mirage configure -t < your-favourite-target >
$ make depend
$ make build
Binärdateien sind bei reproduzierbaren OPAM -Builds erhältlich. Siehe Einsatz von Binary Mirageos Unikernels und reproduzierbaren Mirageos Unikernel -Builds für Einzelheiten.
Bitte öffnen Sie ein Problem, wenn Sie Fragen, Funktionsanfragen oder Kommentare haben.