使用 socat 和 openssl 作为 DTLS/PSK 隧道
Using socat and openssl as DTLS/PSK tunnel
我想结合使用 openssl
和 socat
来为纯文本 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。
我想结合使用 openssl
和 socat
来为纯文本 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。