使用 SniHandler 确定客户端与 Netty 服务器协商的 TLS 版本

Determine which TLS version was negotiated by client to a Netty server, with SniHandler

我目前正在开发一个带有 SniHandler 的 Netty 服务器。我想在会话中记录协商的 TLS 版本,但我无法在 SniHandler 或 SniHandler.SslContext.

中找到此信息

我试图从 SniHandler 访问 SslHandler,但我不知道如何启动 SniHandler,如下所示:

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

我不知道我是否在正确的轨道上。希望有人能给我一些关于检索 TLS 版本表单会话的建议。

谢谢

很抱歉问了一个应该在一个月前解决的类似问题。 Determine which TLS version was negotiated by client to a netty server

此外,这是我想知道的问题的次要方面。 我试图从另一个处理程序中的 ctx 获取上面描述的 sniHandler,代码如下。

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

对我来说 return 似乎是一个空值,有人知道我错过了什么吗?

谢谢谢谢

一旦 SNI 信息被解析,SniHandler 将被替换为 SslHandler。因此,您将从 SslHandler.

中获取信息

类似于:

SslHandler sslHandler = ctx.pipeline().get(SslHandler.class);
SSLEngine engine = sslHandler.engine();
String protocol = engine.getSession().getProtocol();