Я пытаюсь установить соединение DTLS с помощью openssl (c ++).
Однако в то время как есть DTLSv1_listen()
функция на стороне сервера Я не могу найти эквивалент на стороне клиента, чтобы фактически установить соединение UDP с сервером от клиента. Или отправьте что-нибудь на сервер DTLS. Может ли кто-нибудь помочь мне понять, как установить «соединение» с сервером DTLS (я знаю, что точка UDP и обмен дейтаграммами должны быть без соединения, но под соединением я имею в виду схему, такую как запрос DNS + ответ)?
Мне нужно отправить одно сообщение на сервер, а затем получить 1 ответное сообщение. Зашифрованные. С проверкой сертификата. Как такая схема связи будет работать в мире DTLS?
На стороне клиента вы создаете UDP-socket
Передайте это с BIO_new_dgram
к SSL
контекст и связать его с connect()
или же BIO_ctrl(bio, BIO_CTRL_DGRAM_SET_CONNECTED, 0, &server_sockaddr)
, Соединение просто заставляет записываемые файловые дескрипторы всегда отправляться server_sockaddr
,
Теперь просто сделать регулярный SSL_connect
и это должно работать.
Для серверной стороны это немного сложнее. я сделал сообщение и пример реализации
Других решений пока нет …