You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么未携带证书的Socket可连接配置了认证要求的Ignite服务端口?

问题原因
  1. TCP连接与TLS认证是两个独立阶段
    你编写的NIO代码仅完成了操作系统内核层面的TCP三次握手,此时还未触发Ignite应用层的TLS握手逻辑。证书校验是TLS握手阶段的步骤,需要在TCP连接建立成功后,由客户端先发送TLS握手报文才会触发,因此无证书的客户端可以先完成TCP连接,不会被立即断开。

  2. 当前配置未启用通信端口的TLS强制校验
    你虽然在全局配置中注入了SslContextFactory,但Ignite的TcpCommunicationSpi默认关闭SSL/TLS功能,你需要在buildTcpCommunicationSpi()的构造逻辑中显式添加.setSslEnabled(true),才会对该SPI绑定的23055端口强制启用TLS证书校验。

你遇到的DoS触发OOM的问题,本质是大量TCP连接建立后,Ignite的NIO工作线程会为每个新连接预分配直接内存缓冲区,还未等到应用层的认证、超时逻辑触发,直接内存就被耗尽,因此无证书的连接也能占用服务器资源。

修复方案
  • 调整TcpCommunicationSpi配置,显式开启SSL:
TcpCommunicationSpi commSpi = new TcpCommunicationSpi();
commSpi.setSslEnabled(true); // 强制启用TLS校验
// 其余原有配置
  • 新增连接限制配置,缓解DoS影响:设置TcpCommunicationSpi.setMaxConnectionsPerNode()限制单节点最大连接数,调整IgniteConfiguration.setFailureDetectionTimeout()缩短闲置连接超时时间,主动释放无效连接占用的资源。
  • 配合操作系统层面的TCP参数优化(如开启syn cookies、限制单IP最大连接数),进一步降低攻击影响。

内容的提问来源于stack exchange,提问作者biandeqiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:24:05