使用 socat 和 openssl 作为 DTLS/PSK 隧道

Using socat and openssl as DTLS/PSK tunnel

我想结合使用 opensslsocat 来为纯文本 UDP 套接字添加加密。具体来说,

我的应用程序打开一个 UDP 套接字并将纯文本数据发送到 127.0.0.1:8032。我想让 socat 与远程 openssl 服务器建立 DTLS 会话,并对 me app 发送的纯文本数据进行加密,并解密并回传响应。

我已经成功地使用 openssl s_client 进行了握手:

openssl s_client -dtls1_2 -psk <KEY> -psk_identity <ID> -connect <IP>:<PORT>

但我无法让 socat 隧道工作:

socat -x -vvvvvvv SYSTEM:'openssl s_client -dtls1_2 -psk <KEY> -psk_identity <ID> -connect <IP>:<PORT>' UDP-LISTEN:8032

似乎 socat 中继了纯文本数据,但是

我不确定握手是否完成,我不确定 socat 是否会通过此设置正确地转发响应。帮忙?

我设法通过以下修改让它工作。使用 -connect <IP> -port <PORT> 而不是 -connect <IP>:<PORT>。 imo 不是特别直观,但是使用 wireshark 转储流量使得它很容易弄清楚。是的 wireshark。