UnixパイプによるTLS

UnixパイプによるTLS

UnixコマンドラインからUnixパイプを介してTLS / SSLを使用できますか?

同等のものが欲しい

$ mkfifo /tmp/spipe
$ echo a|openssl s_server -acceptFifo /tmp/spipe &
[1] 25563
$ openssl s_client -connectFifo /tmp/spipe
a
[1]   Done                    echo a|openssl s_server -acceptFifo /tmp/spipe

(はい、このために短いプログラムを書くことはそれほど難しくありませんが、既存のツールを使用して実行できればと思います。)

明確にすると、このプロセスのどの時点でもTCP接続を確立したくありません。 UNIXパイプを介してTLS / SSLプロトコルを使用したいと思います。クライアントは Unix パイプを開き、他のパイプから「受信」するサーバーに接続します。 TLS TCP接続からパイプにデータを移動したくありません。

ベストアンサー1

あなたはそれを使用することができますsocat

#client
socat PIPE:/tmp/spipe OPENSSL:server:4443,cafile=server.crt,cert=client.pem

#server
socat -u OPENSSL-LISTEN:4443,reuseaddr,pf=ip4,fork,cert=server.pem,cafile=client.crt PIPE:/tmp/spipe

socat関数が多いため、パイプの使用を避けることもできます。

編集する-uサーバーのsocatに(一方向)オプションを追加しました。このオプションがない場合、パイプは次のように使用されます。エコ提供する。

おすすめ記事