0

我目前正在使用 SniHandler 处理 Netty 服务器。我想在会话中记录协商的 TLS 版本,但在 SniHandler 或 SniHandler.SslContext 中找不到此信息。

我试图从 SniHandler 访问 SslHandler,但我没有弄清楚 SniHandler 是如何启动的,如下所示:

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

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

谢谢

我很抱歉问了一个应该在一个月前解决的类似问题。 确定客户端与 netty 服务器协商的 TLS 版本

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

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

它似乎向我返回了一个空值,有谁知道我错过了什么?

谢谢,谢谢

4

1 回答 1

1

解析 SNI 信息后,将替换SniHandler为。SslHandler所以你会从SslHandler.

就像是:

SslHandler sslHandler = ctx.pipeline().get(SslHandler.class);
SSLEngine engine = sslHandler.engine();
String protocol = engine.getSession().getProtocol();
于 2021-08-16T09:38:01.490 回答