首页 > 解决方案 > 减少 Netty 中的 TLS 记录大小?

问题描述

我目前正在使用 Netty 4.1.24 作为服务器通过 TLS 1.2 上的套接字连接与客户端进行通信。

目前,TLS 记录大小(“wrap”)为 16 Kb,如规范中所定义(参见SslHandler中的实现;相关变量为MAX_PLAINTEXT_LENGTHwrapDataSize

由于客户端的内存限制,我必须减少服务器生成的 TLS 记录大小。我setWrapDataSize用来限制大小,但 Netty 不使用它(它仍然创建 16 Kb 记录)。

我在ChannelInitializer创建SSLEngine/SslHandler

final SslContext sslCtx = SslContextBuilder.forServer(keyManagerFactory)
    .trustManager(trustManagerFactory)
    .clientAuth(ClientAuth.REQUIRE)
    .build();

LOGGER.info("Default SSL Provider: {}", SslContext.defaultServerProvider());

final SslHandler sslHandler = sslCtx.newHandler(channel.alloc());
// Currently not working
sslHandler.setWrapDataSize(1024);

为了检查记录的大小,我使用了 WireShark,但我仍然看到 16388 字节的记录大小。

我的默认 SslContext 提供程序是 JDK。

问题是:我如何强制 Netty 创建更小的记录?

注意:我还减小了 中的发送缓冲区的大小SocketChannelConfig,这也没有效果。(因为它与 TLS 相关)。

标签: nettytls1.2

解决方案


推荐阅读