билеты сеанса openssl - обратный вызов SSL_CTX_set_tlsext_ticket_key_cb вызывается только с enc = 1 - PullRequest
0 голосов
/ 26 января 2020

В серверном приложении я пытаюсь заставить сеансы tls работать с использованием openssl 1.1. Следуя объяснению в https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_tlsext_ticket_key_cb.html

При запросах я вижу, что обратный вызов вызывается в процессе рукопожатия ssl с параметром "enc = 1", как и ожидалось для первого запроса, создающего новый В сеансе функция выполняется, как описано в ссылке выше по openssl, и возвращает значение 1.

Однако в последовательных запросах обратный вызов все еще вызывается с "enc = 1", что указывает на то, что клиент не отправил билет. Таким образом, возобновление сеанса не состоялось.

Пытался использовать оба метода сервера tls 1.2 / 1.3, но не отличался поведением.

При инициации ssl ctx, должны ли быть другие параметры, кроме "SSL_CTX_set_tlsext_ticket_key_cb"? Любые идеи о том, как отлаживать?

Кроме того, поскольку в этом примере указатель "ssl" вообще не используется, поэтому мне не ясно, как / где записывается тикет в окончательный ответ рукопожатия .

Спасибо

1 Ответ

0 голосов
/ 26 января 2020

Есть идеи, как отлаживать?

Выполните захват пакета и проверьте, отправлен ли тикет с сервера клиенту. Если это не так, что-то не так с созданием заявки. Если билет отправлен клиенту, проверьте, отправляет ли клиент тот же билет обратно. Если нет, то что-то не так с клиентом, например, клиент не поддерживает билеты сеанса.

... поскольку в этом примере указатель "ssl" вообще не используется, поэтому не ясно мне, как / где билет записывается в окончательный ответ рукопожатия.

Вновь созданный билет возвращается путем изменения входных данных key_name и ctx. Поскольку это указатели на буферы и модификации структур, они будут отражены обратно для вызывающей стороны. Объект SSL, если требуется, только если кто-то захочет решить, что делать, основываясь на текущем сеансе SSL, что обычно не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...