本文介绍了使用SniHandler确定客户端与Netty服务器协商的TLS版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前在一台Netty服务器上工作,SniHandler正在开发中。我希望在会话中记录协商的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");

它似乎向我返回空值,有人知道我遗漏了什么吗?

谢谢

SNI

解析推荐答案信息后,SniHandler将替换为SslHandler。因此,您将从SslHandler获取信息。

类似:

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

这篇关于使用SniHandler确定客户端与Netty服务器协商的TLS版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 12:43