当前位置: 首页 > news >正文

CyberSecurity:SSL Client-Initiated Renegotiation 客户端发起的重新协商ddos攻击

🔐 SSL Client-Initiated Renegotiation 漏洞分析与解决方案

🔐 SSL Client-Initiated Renegotiation Vulnerability & Solutions

📖 1. 漏洞描述 / Description

中文 服务器允许 SSL/TLS 客户端发起的重新协商 (Client-Initiated Renegotiation)。这意味着客户端在连接期间可以多次请求重新协商加密参数,从而导致潜在的安全风险。

English The server allows SSL/TLS client-initiated renegotiation. This means a connected client can request to renegotiate the encryption parameters multiple times during a single connection, which introduces potential risks.

👨‍💻 Author: Moshow郑锴  ⚡ Powered by: https://zhengkai.blog.csdn.net/

⚠️ 2. 漏洞影响 / Impact

中文 攻击者可能利用该特性发起 拒绝服务攻击 (DoS),通过不断发送重新协商请求消耗服务器的 CPU 和内存,导致性能下降甚至服务不可用。

English Attackers can exploit this feature to launch Denial-of-Service (DoS) attacks by repeatedly sending renegotiation requests, consuming server CPU and memory, degrading performance, or making the service unavailable.

🛠️ 3. 修复建议 / Recommendations

中文 除非业务必须,否则应禁用客户端发起的 SSL/TLS 重新协商。

  • 确保使用最新版本的 SSL/TLS 库(如 OpenSSL、Java SSL)。

  • 在不同服务中通过配置禁用或限制重新协商。

English Unless strictly required, disable client-initiated SSL/TLS renegotiation.

  • Ensure you are using an updated SSL/TLS library (e.g., OpenSSL, Java SSL).

  • Disable or restrict renegotiation in server-specific configurations.

🚀 4. 各服务解决方案 / Solutions by Platform

🌐 NGINX

中文

  • 使用最新版本的 NGINX(1.25+),其默认已不支持不安全的重新协商。

  • 确保 OpenSSL 版本 ≥ 1.1.0。

  • 在配置中避免启用 ssl_legacy_renegotiation

配置示例 (nginx.conf)

nginx

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 禁用不安全的重新协商
ssl_renegotiation off;

English

  • Use the latest NGINX version (1.25+), which by default does not support insecure renegotiation.

  • Ensure OpenSSL ≥ 1.1.0.

  • Avoid enabling ssl_legacy_renegotiation.

🟢Node.js (Express)

中文Node.js 默认使用 OpenSSL 库。要禁用客户端重新协商,可以通过限制 TLS 握手行为:

代码示例 (app.js)

const fs = require('fs');
const https = require('https');
const crypto = require('crypto');
const express = require('express');const app = express();const tlsOptions = {key: fs.readFileSync(process.env.TLS_KEY_PATH),cert: fs.readFileSync(process.env.TLS_CERT_PATH),// ca: fs.readFileSync(process.env.TLS_CA_PATH), // 可选honorCipherOrder: true,minVersion: 'TLSv1.2',//👨‍💻 Author: Moshow郑锴  ⚡ Powered by: https://zhengkai.blog.csdn.net/// 组合多个安全选项secureOptions:crypto.constants.SSL_OP_NO_RENEGOTIATION |crypto.constants.SSL_OP_NO_SSLv2 |crypto.constants.SSL_OP_NO_SSLv3 |crypto.constants.SSL_OP_NO_TLSv1 |crypto.constants.SSL_OP_NO_TLSv1_1 |crypto.constants.SSL_OP_CIPHER_SERVER_PREFERENCE
};https.createServer(tlsOptions, app).listen(8000, () => {console.log('Secure server running on port 8000');
});

EnglishNode.js relies on OpenSSL. To disable renegotiation, use SSL_OP_NO_RENEGOTIATION in the TLS options.

🔐 常见 secureOptions 选项
选项作用推荐情况
SSL_OP_NO_RENEGOTIATION禁用客户端发起的重新协商✅ 强烈推荐
SSL_OP_NO_SSLv2禁用 SSLv2✅ 必须禁用
SSL_OP_NO_SSLv3禁用 SSLv3✅ 必须禁用(POODLE 漏洞)
SSL_OP_NO_TLSv1禁用 TLS 1.0✅ 建议禁用(已过时)
SSL_OP_NO_TLSv1_1禁用 TLS 1.1✅ 建议禁用(已过时)
SSL_OP_CIPHER_SERVER_PREFERENCE强制使用服务端优先的加密套件顺序✅ 推荐
SSL_OP_NO_TICKET禁用 TLS 会话票据(Session Tickets)可选(部分场景下提升安全性)

☕ Spring Boot 3 (Java)

中文 Spring Boot 使用 Java SSL/TLS。可以通过 JVM 参数或配置禁用重新协商:

application.properties

properties

server.port=8010
server.ssl.enabled-protocols=TLSv1.2,TLSv1.3
server.ssl.ciphers=TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256

JVM 启动参数(临时)

-Djdk.tls.rejectClientInitiatedRenegotiation=true

English Spring Boot uses Java SSL/TLS. Disable renegotiation via JVM options:

  • Add -Djdk.tls.rejectClientInitiatedRenegotiation=true

  • Restrict protocols and ciphers in application.properties.

🔐 详细说明server.ssl.enabled-protocol/sciphers

1. server.ssl.enabled-protocols 可选项

这个配置用于指定 允许的 TLS 协议版本

  • TLSv1 → 已过时,不安全(不推荐)

  • TLSv1.1 → 已过时,不安全(不推荐)

  • TLSv1.2 → 目前仍广泛使用,安全性良好 ✅

  • TLSv1.3 → 最新标准,性能更好,安全性更强 ✅

👉 推荐配置

properties

server.ssl.enabled-protocols=TLSv1.2,TLSv1.3

只启用 TLS 1.2 和 1.3,禁用旧版本。

2. server.ssl.ciphers 可选项

这个配置用于指定 允许的加密套件 (Cipher Suites)。 Cipher Suite 由 密钥交换算法 + 加密算法 + 摘要算法 组成。

常见安全 Cipher Suites(推荐)

  • TLS 1.3 专用套件(无需手动配置时,JDK 默认启用)

    • TLS_AES_256_GCM_SHA384

    • TLS_AES_128_GCM_SHA256

    • TLS_CHACHA20_POLY1305_SHA256

  • TLS 1.2 强加密套件

    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

    • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

    • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256

不推荐(弱加密/过时)

  • TLS_RSA_*(纯 RSA 握手,缺少前向保密)

  • TLS_ECDHE_*_WITH_AES_128_CBC_SHA(CBC 模式易受攻击)

  • TLS_DHE_*(性能差,兼容性差)

3. 示例配置(推荐安全组合)

properties

server.ssl.enabled-protocols=TLSv1.2,TLSv1.3
server.ssl.ciphers=TLS_AES_256_GCM_SHA384,\TLS_AES_128_GCM_SHA256,\TLS_CHACHA20_POLY1305_SHA256,\TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

总结

  • 协议:只保留 TLSv1.2 和 TLSv1.3

  • Cipher:优先 AES-GCMCHACHA20-POLY1305,避免 CBC 和 RSA-only。

🎯 5. 总结 / Conclusion

中文 SSL 客户端发起的重新协商功能在现代应用中几乎没有必要,且存在严重的 DoS 风险。通过在 NGINX、Node.js Express、Spring Boot 3 中禁用该特性,可以有效提升服务的安全性与稳定性。

English Client-initiated SSL renegotiation is rarely needed in modern applications and poses a significant DoS risk. Disabling it in NGINX,Node.js Express, and Spring Boot 3 strengthens both security and stability.

👨‍💻 Author: Moshow郑锴  ⚡ Powered by: https://zhengkai.blog.csdn.net/

http://www.dtcms.com/a/438267.html

相关文章:

  • 关于Mybatis-Plus的insertOrUpdate()方法使用时的问题与解决—数值精度转化问题
  • 石家庄做网站制作公司网站写作赚钱
  • Docker、容器、虚拟机到底是什么
  • 西安微信商城网站开发做阿里巴巴怎么进公司网站
  • Go语言入门(17)-接口
  • WebPages 安全
  • 安卓基础组件030-进程和线程
  • [ vue 前端框架 ] 基本用法和vue.cli脚手架搭建
  • 鸿蒙Next中使用Socket进行网络通信:完整指南与实战
  • dw如何做商业网站淘宝网站建设流程
  • 网站做好了 怎么做解析wordpress 怎么迁移
  • GNS3 3.0.5新版教程,以及Cloud设备找不到VMware网卡的解决方法
  • 比奇堡合唱团制作教学,AI翻唱教学动漫角色歌曲
  • 活动展板设计:大尺寸 + 高分辨率,打印清晰
  • 深圳市城乡建设部网站首页一个网站如何做盈利
  • 【IMX6ULL驱动学习】I2C驱动
  • 基于物联网数据采集的大型应用程序软件架构设计:核心要点、结构内容与链路关系
  • 【连载5】云数据库 MySQL 热点更新功能介绍
  • (四)Webpack、Slot与Vue CLI脚手架
  • 【附源码】个人事务管理系统的设计与实现
  • 基于PCIe(XDMA)的多路(1-32路)信号采集与回放子系统,多路视频、AD、光纤等信号,支持PR over PCIe
  • 【STM32项目开源】基于STM32的智能电子秤
  • 网站建设专用图形库西安网站快速排名提升
  • 红色php企业网站模板下载wordpress slider设置
  • Starting again-02
  • 【IMX6ULL驱动学习】PWM驱动
  • 智能向善” 核心,解析技术发展中的红利与风险平衡
  • 品牌 RWA 化构建白皮书
  • 个人数据泄露有哪些法律与安全风险?
  • 学习Java第二十九天——黑马点评33~36