Определите, какая версия TLS согласована клиентом с сервером Netty, с помощью SniHandler

В настоящее время я работаю над сервером Netty с SniHandler в стадии разработки. Я хотел бы зарегистрировать согласованную версию TLS в сеансе, но я не могу найти эту информацию в SniHandler или SniHandler.SslContext.

Я пытался получить доступ к SslHandler из SniHandler, но я не понял, как это сделать, поскольку SniHandler запускается, как показано ниже:

      p.addLast("sniHandler", new SniHandler(options.domainNameMapping));

Не знаю, на правильном ли я пути. Надеюсь, кто-то может дать мне несколько советов по получению сеанса формы версии TLS.

Спасибо

Сожалею, что задаю аналогичный вопрос, который нужно было решить месяц назад.Определите, какая версия TLS была согласована клиентом с сервером netty

Кроме того, это второстепенная сторона вопроса, которую я хотел бы знать. Я пытался получить описанный выше sniHandler из ctx в другом обработчике с кодом ниже.

      SniHandler sniHandler = (SniHandler) ctx.pipeline().get("sniHandler");

Кажется, он возвращает мне нулевое значение, кто-нибудь знает, что мне не хватает?

Спасибо-спасибо

1 ответ

В SniHandlerзаменяется на после анализа информации SNI. Таким образом, вы получите информацию от SslHandler.

Что-то типа:

      SslHandler sslHandler = ctx.pipeline().get(SslHandler.class);
SSLEngine engine = sslHandler.engine();
String protocol = engine.getSession().getProtocol();
Другие вопросы по тегам