นี่คือ mirageos unikernel ที่ยอมรับการเชื่อมต่อ TLS ผ่านอินเทอร์เฟซเครือข่ายสาธารณะ (บริการ) บน Frontend-Port และพร็อกซ์พวกเขาโดยใช้ TCP ผ่านอินเตอร์เฟสเครือข่ายส่วนตัวเพื่อแบ็กเอนด์ -IP และพอร์ตแบ็กเอนด์ ไคลเอนต์ที่เชื่อมต่อกับ TLStunnel ต้องสร้างการเชื่อมต่อ TLS ซึ่งน้ำหนักบรรทุกจะถูกส่งต่อไปยังบริการแบ็กเอนด์ผ่าน TCP
TLStunnel สามารถใช้สำหรับการโหลดสมดุล-โดยใช้ TLStunnel หลายตัวในส่วนหน้าซึ่งทำหน้าที่เข้ารหัสลับราคาแพง
ความปลอดภัยที่ชาญฉลาดเฉพาะ TLStunnel ต้องการการเข้าถึงคีย์ส่วนตัวของใบรับรอง X.509 เมื่อ TLStunnel ได้รับการกำหนดค่าให้ทำการตรวจสอบสิทธิ์ไคลเอนต์เฉพาะไคลเอนต์ที่ถูกต้องเท่านั้นที่สามารถเข้าถึงบริการแบ็กเอนด์ จำกัด การโจมตีพื้นผิวอย่างมาก
การดำเนินการ TLStunnel ต้องใช้ที่อยู่ IP สองแห่ง: ที่หนึ่งคือที่สาธารณะหันหน้าเข้าหาหนึ่งอยู่ในเครือข่ายส่วนตัว (ที่การเชื่อมต่อ TCP ถูกส่งต่อไป) การกำหนดค่าสามารถทำได้ผ่านยูทิลิตี้บรรทัดคำสั่งบนเครือข่ายส่วนตัว ใบรับรอง X.509 ควรใช้งานผ่าน DNS (ดู DNS-Primary-Git และ DNS-Letesencrypt-Secondary)
ลองพิจารณาที่อยู่ IP สาธารณะของคุณคือ 1.2.3.4/24 (พร้อมเกตเวย์เริ่มต้น 1.2.3.1) คุณใช้ 192.168.0.4/24 เป็นเครือข่ายส่วนตัวของคุณ เซิร์ฟเวอร์ DNS ของคุณคือ 1.2.3.5 พร้อมคีย์ tlstunnel._update.example.org
เริ่มต้น 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=
ตอนนี้เมื่อ tlstunnel จัดการเพื่อรับใบรับรองผ่าน DNS คุณสามารถเชื่อมต่อกับ https://1.2.3.4 แล้วและควรดูใบรับรอง:
$ openssl s_client -connect 1.2.3.4:443
$ curl https://1.2.3.4
ในการกำหนดค่าการส่งต่อของ TLStunnel ซึ่งชื่อโฮสต์ที่ระบุจะถูกส่งต่อไปยังที่อยู่ IP และคู่พอร์ตคุณต้องใช้ Binary tlstunnel-client
จากโฟลเดอร์ย่อย client
การสื่อสารได้รับการรับรองความถูกต้องโดยใช้ความลับที่ใช้ร่วมกันผ่านไปยัง tlstunnel ( --key=secret
)
การกำหนดค่าจะถูกเก็บไว้ในอุปกรณ์บล็อก (ในทางที่แข็งแกร่งเช่นการเปลี่ยนแปลงก่อนข้อมูลใหม่จะถูกเขียนและหลังจากนั้น SuperBlock คือการอัปเดต)
$ 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
ในการติดตั้ง unikerNel นี้จากแหล่งที่มาคุณจะต้องติดตั้ง OPAM (> = 2.0.0) และ OCAML (> = 4.08.0) นอกจากนี้ยังจำเป็นต้องมี Mirage (> = 4.5.0) โปรดทำตามคำแนะนำการติดตั้ง
ขั้นตอนต่อไปนี้จะโคลนพื้นที่เก็บข้อมูล Git นี้และรวบรวม unikernel:
$ git clone https://github.com/robur-coop/tlstunnel.git
$ cd tlstunnel/unikernel && mirage configure -t < your-favourite-target >
$ make depend
$ make build
ไบนารีมีให้บริการในการสร้าง OPAM ที่ทำซ้ำได้ดูการปรับใช้ Binary Mirageos Unikernels และ Mirageos Unikernel ที่ทำซ้ำได้เพื่อสร้างรายละเอียด
โปรดเปิดปัญหาหากคุณมีคำถามคำขอคุณสมบัติหรือความคิดเห็น