هذا هو Mirageos Unikernel تقبل اتصالات TLS عبر واجهة شبكة العامة (الخدمة) على منفذ الواجهة الأمامية ، وتكييفها باستخدام TCP عبر واجهة الشبكة الخاصة إلى الخلفية IP و Backend-Port. يتعين على العميل الذي يتصل بـ TLStunnel إنشاء اتصال TLS ، والذي يتم إعادة توجيه حمولة النافعة إلى خدمة الواجهة الخلفية عبر TCP.
يمكن استخدام tlstunnel لتوازن التحميل-باستخدام TLStunnel متعددة على الواجهة الأمامية للقيام بعمليات تشفير باهظة الثمن (مصافحة TLS غير المتماثلة والتشفير المتماثل) مع الخدمات الخلفية (أو متعددة) التي تتواصل عبر TCP عادي.
من المحظوظ فقط ، يحتاج TLSTUNNEL إلى الوصول إلى المفتاح الخاص لشهادة (شهادات) X.509. عندما يتم تكوين TLStunnel للقيام بمصادقة العميل ، يمكن للعملاء الصالحين فقط الوصول إلى خدمة الواجهة الخلفية ، مما يحد من سطح الهجوم بشكل كبير.
يتطلب تنفيذ TLStunnel عنوانين IP: أحدهما هو مواجهة الجمهور ، والآخر موجود على الشبكة الخاصة (حيث يتم إعادة توجيه اتصالات TCP). يمكن إجراء التكوين عبر أداة سطر الأوامر على الشبكة الخاصة. يجب أن تكون شهادة X.509 متاحة عبر DNS (انظر DNS-PRIMARY-GIT و DNS-LetSencrypt-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 وزوج المنفذ ، يجب عليك استخدام 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 القابلة للتكرار ، راجع نشر Mirageos الثنائية unikernels و Mirageos unikernel القابلة للتكرار للتفاصيل.
يرجى فتح مشكلة إذا كانت لديك أسئلة أو طلبات ميزة أو تعليقات.