web-dev-qa-db-ja.com

Unixパイプを介したTLS

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

同等のものが欲しい

$ 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パイプを開き、別のパイプで「リッスン」しているサーバーに接続します。 TLStcp接続からパイプにデータを移動したくありません。

6

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には多くの機能があるため、パイプをまったく回避できる可能性があります。

[〜#〜] edit [〜#〜]:サーバーのsocatに-u(単方向)オプションを追加しました-それがないと、パイプechoサービスとして機能します。

3
jofel