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

如何修复Windows Server运行Tomcat的TLS/SSL安全漏洞

问题环境说明
  • 服务器操作系统:Windows Server 2016 R2
  • 业务承载组件:Tomcat 9.0.62

当前系统层配置的已启用TLS密码套件列表如下:

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256

安全扫描上报三类TLS/SSL漏洞:

  • TLS/SSL 64位块密码生日攻击漏洞(SWEET32)
  • TLS/SSL服务器支持3DES密码套件(当前系统已配置套件列表中无3DES相关条目)
  • TLS/SSL服务器支持使用静态密钥密码套件
漏洞根因说明

出现「配置列表里没3DES还扫出3DES漏洞」的问题,核心原因是三层配置独立生效、没有做统一收敛:

  1. Windows系统Schannel组件的默认密码套件顺序,可能和手动列的已安装套件不一致,部分未被显式禁用的弱套件会保留在协商列表里
  2. Tomcat如果没有显式指定允许的密码套件,会根据自身使用的JSSE/APR连接器类型,要么继承JRE内置的TLS套件列表,要么继承系统Schannel配置,旧版本JRE默认会启用3DES等弱套件
  3. 当前配置的套件里本身就包含触发另外两个漏洞的条目:TLS_RSA_WITH_*开头的都是无向前保密的静态密钥套件,所有CBC模式的AES套件如果和旧协议搭配,也会触发SWEET32相关的扫描规则。
分步修复方案

前置:统一Tomcat TLS配置,接管协商逻辑

找到Tomcat安装目录下conf/server.xml中配置HTTPS的Connector节点,先做基础协议限制:

  • 新增参数sslEnabledProtocols="TLSv1.2,TLSv1.3",直接禁用SSLv3、TLSv1.0、TLSv1.1所有旧版不安全协议
  • 不要使用模糊的sslProtocol="TLS"配置,显式指定协议版本范围,避免自动启用旧协议。

1. 修复静态密钥密码套件漏洞

当前列表里所有TLS_RSA_WITH_前缀的套件都属于静态密钥套件,这类套件不支持前向保密,一旦服务器私钥泄露,所有历史加密流量都可以被解密,直接从允许列表中全部移除即可,只保留ECDHE前缀的支持前向保密的套件。

2. 修复SWEET32漏洞、隐式启用的3DES漏洞

SWEET32漏洞的触发条件是服务器支持块大小为64位的对称加密算法(3DES、Blowfish、IDEA等),部分扫描规则也会将未被显式禁用的CBC模式套件判定为风险项,结合3DES异常上报的问题,做三层加固兜底:

  • Tomcat层显式指定允许的安全套件:在Connector节点新增ciphers参数,只列GCM模式的安全套件,完全排除所有CBC、3DES、RC4、DES类弱套件。
    如果用的是Tomcat默认的NIO/NIO2 JSSE连接器,ciphers参数值填:
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    
    如果用的是APR/Native连接器,套件名换成OpenSSL格式:
    ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384
    
  • JRE层禁用弱算法:进入Tomcat使用的JRE/JDK安装目录,找到lib/security/java.security文件,定位到jdk.tls.disabledAlgorithms配置项,在原有值末尾追加3DES, DES, RC4, CBC, TLSv1, TLSv1.1, SSLv3, RSA keySize < 2048,从JRE层面直接阻断弱套件协商。
  • Windows系统层兜底加固:打开本地组策略编辑器,依次进入计算机配置 > 管理模板 > 网络 > SSL配置设置,找到「SSL密码套件顺序」项,设置为「已启用」,将允许列表中所有带3DES、DES、RC4、CBC、IDEA的套件全部删除,只保留前面列的4个GCM模式ECDHE套件,保存后重启服务器让系统配置生效。

验证步骤

所有配置修改完成后重启Tomcat服务,先本地执行openssl s_client -connect 服务IP:443 -cipher 3DES测试3DES套件是否还能协商成功,再用TLS检测工具扫描全量套件列表,确认静态RSA套件、64位块加密套件都不在支持列表中,重新跑安全扫描即可消除这三类告警。

注意:配置ciphers参数前先确认使用的连接器类型,配错套件名格式会导致Tomcat HTTPS端口启动失败,修改配置前记得备份原server.xml文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:00:24