これは、Frontend-Portのパブリック(サービス)ネットワークインターフェイスを介してTLS接続を受け入れるMirageos Unikernelであり、Private Network Interfaceを介してTCPを使用してBackEnd-IPおよびBackEnd-Portにプロキシであることです。 TLStunnelに接続するクライアントは、TLS接続を確立する必要があります。これは、ペイロードがTCPを介してバックエンドサービスに転送されます。
Tlstunnelは、フロントエンドで複数のTlstunnelを使用して、高価な暗号操作(非対称TLSハンドシェイクと対称暗号化)を使用して、単一(または複数の)バックエンドサービスを使用して、プレーンTCPを介して通信するために使用できます。
セキュリティごとに、tlstunnelのみがX.509証明書の秘密鍵にアクセスする必要があります。 Tlstunnelがクライアント認証を行うように構成されている場合、有効なクライアントのみがバックエンドサービスにアクセスし、攻撃面を劇的に制限できます。
tlstunnelの実行には、2つのIPアドレスが必要です。1つはパブリックに直面し、もう1つはプライベートネットワーク上にあります(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サーバーは、キーTLStunnel._update.example.orgを使用して1.2.3.5です。
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
サブフォルダーからバイナリ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
このユニカネルをソースからインストールするには、OPAM(> = 2.0.0)とOCAML(> = 4.08.0)をインストールする必要があります。また、ミラージュが必要です(> = 4.5.0)。インストール手順に従ってください。
次の手順では、このgitリポジトリをクローンし、ユニカネルをコンパイルします。
$ git clone https://github.com/robur-coop/tlstunnel.git
$ cd tlstunnel/unikernel && mirage configure -t < your-favourite-target >
$ make depend
$ make build
バイナリは再現可能なオパムビルドで入手できます。詳細については、バイナリミラージョユニカネルと再現可能なミラジオユニカネルビルドの展開を参照してください。
質問、機能のリクエスト、またはコメントがある場合は、問題を開きます。