이것은 Frontend-Port의 공개 (Service) 네트워크 인터페이스를 통해 TLS 연결을 수락하는 Mirageos Unikernel이며, 개인 네트워크 인터페이스를 통해 Backend-IP 및 백엔드 포트를 통해 TCP를 사용하여 프록시하는 것입니다. TLSTUNNEL에 연결하는 클라이언트는 TLS 연결을 설정해야하며,이 페이로드는 TCP를 통해 백엔드 서비스로 전달됩니다.
Tlstunnel은로드 밸런싱에 사용할 수 있습니다-일반 TCP를 통해 통신하는 단일 (또는 다중) 백엔드 서비스를 갖춘 고가의 암호화 작업 (Asymmetrics TLS 핸드 셰이크 및 대칭 암호화)을 수행하는 프론트 엔드에서 여러 Tlstunnel을 사용합니다.
보안 측면에서만 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
지정된 호스트 이름이 IP 주소 및 포트 쌍으로 전달되는 Tlstunnel의 전달을 구성하려면 client
서브 폴더에서 Binary tlstunnel-client
사용해야합니다. 통신은 Tlstunnel ( --key=secret
)으로 전달 된 공유 비밀을 사용하여 인증됩니다.
구성은 블록 장치에 보관됩니다 (예 : 변경 사항은 먼저 새로운 데이터가 작성된 후 슈퍼 블록이 업데이트됩니다).
$ 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
Binaries는 재현 가능한 Opam 빌드에서 구입할 수 있으며, 이진 Mirageos Unikernel 및 재현 가능한 Mirageos Unikernel Builds 배포를 참조하십시오.
질문, 기능 요청 또는 의견이 있으면 문제를여십시오.