漏洞名称: SSL/TLS:远程主机支持RSA密钥交换(原理扫描)
远程主机支持RSA密钥交换意味着缺乏前向保密,存在历史流量解密风险,是过时且不推荐使用的配置,建议更新为ECDHE 等临时密钥交换算法,以增强会话安全性和隐私保 护。
这个漏洞的核心问题是服务器支持 RSA 静态密钥交换 ,它不具备前向保密性(Forward Secrecy),一旦服务器私钥泄露,所有历史加密流量都可以被解密,属于过时且不安全的配置。修复的核心目标是:
- 禁用纯 RSA 密钥交换算法
- 强制使用 TLS 1.2/1.3 协议
- 仅启用带前向保密的 ECDHE 类密码套件
🛠️ 分场景修复方案
一、Nginx 服务器修复
修改 Nginx 配置文件(nginx.conf 或站点配置),在 server 块中添加 / 修改以下配置:
nginx
ini
# 强制TLS 1.2+
ssl_protocols TLSv1.2 TLSv1.3;
# 禁用RSA密钥交换,仅保留ECDHE开头的安全套件
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
# 启用ECDHE曲线
ssl_ecdh_curve secp384r1:secp256r1;
# 优化会话配置
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
修改后执行 nginx -t 验证配置,再重启 nginx 服务。
二、Apache 服务器修复
修改 Apache 配置文件(httpd.conf 或 ssl.conf):
apache
ruby
# 强制TLS 1.2+
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
# 禁用RSA密钥交换,启用ECDHE套件
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on
修改后重启 httpd 服务。
三、Windows 服务器(IIS)修复
-
**推荐工具方案(简单安全)**下载并使用 IIS Crypto 工具:
- 打开工具 → 选择
Best Practices模板 - 在
Protocols选项卡:禁用 SSL2.0/3.0、TLS1.0/1.1,仅启用 TLS1.2/1.3 - 在
Cipher Suites选项卡:取消所有以TLS_RSA_开头的套件,仅保留TLS_ECDHE_开头的安全套件 - 点击
Apply并重启服务器。
- 打开工具 → 选择
-
**注册表方案(手动修改)**打开注册表编辑器,定位到:
sqlHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\RSA新建 / 修改
Enabled为0(禁用 RSA 密钥交换),同时确保ECDHE项的Enabled为1,修改后重启服务器。
四、Java 应用服务器(Tomcat/Jetty)修复
修改 Tomcat 的 server.xml 配置文件,调整 Connector 节点:
xml
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<!-- 强制TLS 1.2+ -->
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
<ciphers>
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
</ciphers>
<protocols>TLSv1.2,TLSv1.3</protocols>
</SSLHostConfig>
</Connector>
修改后重启 Tomcat 服务。
✅ 修复验证
修复后,你可以使用以下方式验证漏洞是否解决:
-
安全扫描工具:使用原漏洞扫描工具重新扫描,确认 "RSA 密钥交换" 漏洞消失。
-
在线检测:使用
Qualys SSL Labs Server Test或ssllabs.com在线检测服务器的密码套件支持情况。 -
命令行检测:使用
openssl命令验证:bash
运行
arduinoopenssl s_client -connect 你的服务器IP:端口 -cipher 'RSA'如果返回
ssl handshake failure,说明纯 RSA 密钥交换已被成功禁用。