Ini adalah mirageos unikernel yang menerima koneksi TLS melalui antarmuka jaringan publik (Layanan) di Frontend-Port, dan memberikan mereka menggunakan TCP melalui antarmuka jaringan pribadi ke backend-IP dan backend-port. Klien yang menghubungkan ke TLSTunnel harus membuat koneksi TLS, yang muatannya diteruskan ke layanan backend melalui TCP.
Tlstunnel dapat digunakan untuk menyeimbangkan beban-menggunakan beberapa TLSTUNNEL di frontend melakukan operasi crypto mahal (asimetrik jabat tangan TLS dan kriptografi simetris) dengan satu-layanan backend tunggal (atau beberapa) yang berkomunikasi melalui TCP polos.
Dari segi keamanan hanya tlstunnel yang membutuhkan akses ke kunci pribadi sertifikat X.509. Ketika tlstunnel dikonfigurasi untuk melakukan otentikasi klien, hanya klien yang valid yang dapat mengakses layanan backend, membatasi permukaan serangan secara drastis.
Mengeksekusi TLSTunnel memerlukan dua alamat IP: satu adalah yang menghadap publik, yang lain ada di jaringan pribadi (di mana koneksi TCP diteruskan ke). Konfigurasi dapat dilakukan melalui utilitas baris perintah di jaringan pribadi. Sertifikat X.509 harus tersedia melalui DNS (lihat DNS-Primary-Git dan DNS-Letsencrypt-Secondary).
Mari kita pertimbangkan alamat IP publik Anda menjadi 1.2.3.4/24 (dengan gateway default 1.2.3.1). Anda menggunakan 192.168.0.4/24 sebagai jaringan pribadi Anda. Server DNS Anda adalah 1.2.3.5 dengan kunci tlstunnel._update.example.org.
Memulai tlstunnel:
$ 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=
Sekarang, begitu tlstunnel berhasil mendapatkan sertifikat melalui DNS, Anda sudah dapat terhubung ke https://1.2.3.4 dan akan melihat sertifikat:
$ openssl s_client -connect 1.2.3.4:443
$ curl https://1.2.3.4
Untuk mengonfigurasi penerusan TLSTunnel, di mana nama host yang ditentukan akan diteruskan ke alamat IP dan pasangan port, Anda harus menggunakan tlstunnel-client
biner dari subfolder client
. Komunikasi ini diautentikasi menggunakan rahasia bersama yang diteruskan ke tlstunnel ( --key=secret
).
Konfigurasi disimpan di perangkat blok (dengan cara yang kuat, yaitu perubahan pertama data baru ditulis dan setelah itu superblock adalah pembaruan).
$ 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
Untuk menginstal unikernel ini dari sumber, Anda harus memiliki OPAM (> = 2.0.0) dan OCAML (> = 4.08.0) diinstal. Juga, Mirage diperlukan (> = 4.5.0). Ikuti instruksi instalasi.
Langkah -langkah berikut akan mengkloning repositori git ini dan menyusun unikernel:
$ git clone https://github.com/robur-coop/tlstunnel.git
$ cd tlstunnel/unikernel && mirage configure -t < your-favourite-target >
$ make depend
$ make build
Binari tersedia di build OPAM yang dapat direproduksi, lihat Menyebarkan Binary Mirageos Unikernels dan Build Mirageos Unikernel yang Dapat Diproduksi untuk detailnya.
Harap buka masalah jika Anda memiliki pertanyaan, permintaan fitur, atau komentar.