这是Mirageos Unikernel,通过prontend-port上的公共(服务)网络接口接受TLS连接,并通过专用网络接口使用TCP代理它们,以向后端IP和后端端口进行TCP。连接到TLSTUNNEL的客户端必须建立TLS连接,该连接通过TCP转发到后端服务。
TLSTUNNEL可用于负载平衡 - 使用前端上的多个TLSTUNNEL进行昂贵的加密操作(不对称的TLS握手和对称的加密术),并使用单个(或多个)后端服务,这些服务通过平原TCP通信。
在安全方面,只有TLSTUNNEL才需要访问X.509证书的私钥。当TLStunnel配置为进行客户端身份验证时,只有有效的客户端才能访问后端服务,从而大大限制攻击表面。
执行TLSTUNNEL需要两个IP地址:一个是一个面向一个的公众,另一个是在专用网络上(将TCP连接转发为TCP连接)。配置可以通过专用网络上的命令行实用程序完成。 X.509证书应通过DNS获得(请参阅DNS-primary-Git和dns-letsencrypt-Secardary)。
让我们考虑您的公共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地址和端口对,您必须使用client
端子文件夹中的二进制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)。另外,需要幻影(> = 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构建构建的详细信息。
如果您有疑问,功能请求或评论,请打开问题。