Ela*_*ich 6 pipe ssl openssl 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
Run Code Online (Sandbox Code Playgroud)
(是的,编写一个简短的程序来做到这一点并不难,但我希望现有工具可以实现)
让我澄清一下,我不希望在此过程中的任何时候都建立 tcp 连接。我想通过 UNIX 管道使用 TLS/SSL 协议。客户端将打开一个 unix 管道,并将连接到另一个管道上的服务器“侦听”。我不想将数据从 TLS tcp 连接移动到管道。
您可以使用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
Run Code Online (Sandbox Code Playgroud)
socat有很多功能,所以你也许可以完全避免使用管道。
编辑:-u向服务器的 socat 添加了(单向)选项 - 没有它,管道将用作回显服务。