SslHandler 的握手是不是通过所有客户端/服务器管道处理程序?

Posted

技术标签:

【中文标题】SslHandler 的握手是不是通过所有客户端/服务器管道处理程序?【英文标题】:Does SslHandler's handshake go through all client/server pipeline handlers?SslHandler 的握手是否通过所有客户端/服务器管道处理程序? 【发布时间】:2021-11-02 01:12:48 【问题描述】:

我有一个带有 SslHandler 的客户端和服务器管道。它在docs 中声明,

一旦频道启动,握手将自动为您发出 active 并且 SSLEngine.getUseClientMode() 返回 true

由于握手涉及一些消息交换,我想知道服务器端的其他 ChannelHandler(比如解码器、记录器)是否也收到这些消息?似乎它没有意义,因为握手应该只在客户端 SslHandler 和服务器 SslHandler 之间发生(物理上是多消息但逻辑上是原子的事情)。我猜 SslHandler 不会仅仅通过在握手 "ping-pong" 完成之前不调用 fireReadEvent 将握手消息传播给其他处理程序,但在查看代码后不确定。

【问题讨论】:

【参考方案1】:

SslHandler“之前”的所有处理程序都会看到这些数据包。 SslHandler“之后”的所有处理程序只会在握手完成后看到数据包(并且所有这些数据包都将被解密)。

【讨论】:

以上是关于SslHandler 的握手是不是通过所有客户端/服务器管道处理程序?的主要内容,如果未能解决你的问题,请参考以下文章

使用 2-way SSL Handskake(客户端和服务器证书)设置 Netty

Netty 设置 SSL 握手超时不起作用

Netty 和 SSL websocket 客户端

如何在 Netty 中的 ssl 握手之前优雅地关闭频道?

为啥是四次挥手而不是三次

通过完全记录握手来破坏 TLS 安全性