Использование socat и openssl в качестве туннеля DTLS / PSK - PullRequest
0 голосов
/ 24 марта 2020

Я хочу объединить openssl и socat, чтобы добавить шифрование в обычные текстовые сокеты UDP. В частности,

Мое приложение открывает сокет UDP и отправляет текстовые данные на 127.0.0.1:8032. Я хочу, чтобы socat установил sh сеанс DTLS с удаленным сервером openssl и зашифровал текстовые данные, отправленные моим приложением, а также расшифровал и передал ответ.

Мне удалось получить рукопожатие используя 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 в любом случае правильно передаст ответ с этой настройкой. Помощь

1 Ответ

0 голосов
/ 24 марта 2020

Мне удалось заставить его работать со следующей модификацией. Вместо -connect <IP>:<PORT> используйте -connect <IP> -port <PORT>. Не особенно интуитивно понятный imo, но сброс траффи c с помощью wireshark позволил довольно легко разобраться. Yay wireshark.

...