TLS sobre pipe unix

5

Posso usar o TLS / SSL em um pipe Unix com a linha de comando do Unix?

Eu quero o equivalente de

$ 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

(Sim, não é difícil escrever um programa curto para fazer isso, mas eu esperava que fosse possível com ferramentas existentes)

Deixe-me esclarecer, não quero uma conexão tcp a qualquer momento no processo. Eu quero usar o protocolo TLS / SSL em um pipe UNIX. O cliente abrirá um pipe unix e se conectará ao servidor "escutando" em outro canal. Eu não quero mover dados da conexão TLS tcp para um pipe.

    
por Elazar Leibovich 29.02.2012 / 15:41

1 resposta

2

Você pode usar 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 tem muitos recursos, então talvez você possa evitar os canais.

EDIT : adicionada a opção -u (unidirecional) à socat do servidor - sem ela, o canal funciona como um serviço echo .

    
por 01.03.2012 / 14:55