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 프로토콜을 사용하고 싶습니다. 클라이언트는 유닉스 파이프를 열고 다른 파이프에서 "수신"하는 서버에 연결합니다. 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에 (단방향) 옵션을 추가했습니다. 이 옵션이 없으면 파이프는 다음과 같이 사용됩니다.에코제공하다.

관련 정보