修复方案:禁用过时的 64 位分组密码(如 DES、3DES、RC2、IDEA 等)
64 位块密码(如 DES、3DES、RC2、IDEA)容易受到 Sweet32(CVE-2016-2183)等攻击,导致安全风险。以下是修复方法:
1. 检测当前是否使用 64 位块密码
(1)使用 OpenSSL 检查支持的加密套件
openssl ciphers -v 'ALL:COMPLEMENTOFALL' | grep -E 'DES|3DES|RC2|IDEA'
如果输出包含 DES-CBC3-SHA
、IDEA-CBC-SHA
等,说明服务器仍支持弱密码。
(2)使用 nmap 检测
nmap --script ssl-enum-ciphers -p 443 your-server.com
查看是否有 DES
或 3DES
相关密码套件。
(3)使用 testssl.sh 检测
./testssl.sh --openssl-timeout 10 your-server.com:443
检查 64-bit block cipher 3DES
是否被标记为不安全。
2. 禁用 64 位块密码(DES/3DES/RC2/IDEA)
(1)Nginx 配置
在 nginx.conf
或站点 SSL 配置中,移除 DES
和 3DES
:
ssl_protocols TLSv1.2 TLSv1.3; # 禁用 TLS 1.0/1.1
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
✅ 推荐密码套件(仅使用 AES-128/256-GCM 或 CHACHA20)
TLS_AES_256_GCM_SHA384
(TLS 1.3)ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
(2)Apache 配置
在 ssl.conf
或虚拟主机配置中:
SSLProtocol TLSv1.2 TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder on
🚫 明确禁用 DES/3DES
SSLCipherSuite !DES:!3DES:!RC2:!IDEA
(3)Tomcat(server.xml)
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
sslEnabledProtocols="TLSv1.2,TLSv1.3"
ciphers="TLS_AES_256_GCM_SHA384,ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384" />
禁用 3DES(如果旧版本需要额外配置):
<SSLHostConfig>
<Ciphers>TLS_AES_256_GCM_SHA384,ECDHE-RSA-AES256-GCM-SHA384,!3DES</Ciphers>
</SSLHostConfig>
(4)Java(JVM 参数)
在启动时禁用弱密码:
java -Djdk.tls.disabledAlgorithms="SSLv3, TLSv1, TLSv1.1, DES, 3DES, RC4, MD5withRSA, DH keySize < 1024"
或在 java.security
文件($JAVA_HOME/conf/security/java.security
)中修改:
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DES, 3DES, RC4, MD5withRSA, DH keySize < 1024
3. 验证修复是否生效
(1)OpenSSL 测试
openssl s_client -connect your-server.com:443 -tls1_2 -cipher 'DES,3DES'
预期结果:no shared cipher
(表示已禁用)。
(2)使用 nmap 重新检测
nmap --script ssl-enum-ciphers -p 443 your-server.com
检查是否仍存在 DES
或 3DES
。
(3)使用 Qualys SSL Labs 测试
访问 https://www.ssllabs.com/ssltest/ 并输入域名,确保 3DES 被标记为 Not Supported。
4. 额外加固建议
✅ 仅允许 TLS 1.2+(禁用 TLS 1.0/1.1)
✅ 使用 ECDHE 密钥交换(前向保密)
✅ 禁用 CBC 模式密码(改用 GCM 或 CHACHA20)
✅ 定期更新 OpenSSL/Nginx/Apache
📌 总结
- 检测:使用
openssl
或nmap
检查是否支持DES/3DES
。 - 修复:在 Nginx/Apache/Tomcat/Java 中禁用
DES
和3DES
。 - 验证:使用
openssl s_client
或 SSL Labs 确认修复成功。
修复后,服务器将不再支持 64 位块密码,提高安全性! 🚀