Ошибка DTLSv1_Listen
В настоящее время я пишу сервер DTLS. Я столкнулся с проблемой с DTLSv1_Listen, которая завершается ошибкой с кодом ошибки SSL_ERROR_SSL.
Последовательность рукопожатия следующая: Тип содержимого Hello клиента: Handshake (22) Версия: DTLS 1.2 (0xfefd) Эпоха: 0 Порядковый номер: 0 Длина: 145 Протокол рукопожатия: Client Hello Тип рукопожатия: Client Hello (1) Длина: 133 Сообщение Последовательность: 0 Смещение фрагмента: 0 Длина фрагмента: 133 Версия: DTLS 1.2 (0xfefd) Случайная: 10a0b17d31c7b374d08d51f3fdd3e6b5ecb13658a9e554a3... Длина идентификатора сеанса: 0 Длина файла cookie: 0 Длина комплектов шифров: 6 Длина комплектов шифров (3 комплекта) Метод сжатия (3 комплекта) Метод сжатия Методы (1 метод) Длина расширений: 85 Расширение: ec_point_formats (len=4) Расширение: support_groups (len=28) Расширение: SessionTicket TLS (len=0) Расширение: signature_algorithms (len=32) Расширение: heartbeat (len=1)
Тип содержимого запроса Hello Verify: Handshake (22) Версия: DTLS 1.2 (0xfefd) Эпоха: 0 Порядковый номер: 0 Длина: 35 Протокол квитирования: Запрос подтверждения Hello Тип запроса: Hello Verify Request (3) Длина: 23 Последовательность сообщений: 0 Фрагмент Смещение: 0 Длина фрагмента: 23 Версия: DTLS 1.0 (0xfeff) Длина файла cookie: 20 Файл cookie: c4994e593cd77b26208a374cde0b48372a1636db
Уровень записи DTLSv1.2: оповещение (уровень: неустранимый, описание: сбой при рукопожатии) Тип контента: оповещение (21) Версия: DTLS 1.2 (0xfefd) Эпоха: 0 порядковый номер: 1 длина: 2 оповещение
Мой контекст ssl инициализируется таким образом:
SSL_library_init ();
SSL_load_error_strings ();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
pServerContext = SSL_CTX_new(DTLSv1_2_server_method());
if (SSL_CTX_set_cipher_list(pServerContext, "ALL") != 1)
{
getLogger()->error("DTLS : unable to load ciphers, exiting\n");
exit(1);
}
[... установить сертификаты, ключи и т.д...]
Возвращенный файл cookie верный, и я не вижу, что не так. Единственным странным моментом является версия: DTLS 1.0, отправленная в запросе на проверку (странно, потому что я инициализирован с DTLSv1_2_server_method). Есть ли объяснение того, почему это не удается?
Спасибо за любой вклад!