最可靠方式是在web服务器配置中显式排除sslv2、sslv3、tlsv1.0和tlsv1.1。apache用sslprotocol all -sslv2 -sslv3 -tlsv1 -tlsv1.1,nginx、tomcat、iis均需白名单或注册表禁用,同步淘汰弱加密套件并验证生效。

直接在 Web 服务器配置中明确排除 SSLv2、SSLv3、TLSv1.0 和 TLSv1.1,是禁用不安全旧协议最可靠的方式。关键不是只写“启用哪些新协议”,而是用“全量排除”语法确保旧协议彻底失效。
Apache:用 SSLProtocol all -XXX 精准剔除
找到 HTTPS 对应的配置块(如 <virtualhost></virtualhost> 或全局 ssl.conf),在 SSLEngine on 下方添加:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1- 该写法兼容 Apache ≥2.2.23,且比
TLSv1.2白名单更稳妥——旧版本 Apache 可能忽略纯白名单配置 - 确认
mod_ssl已加载:LoadModule ssl_module modules/mod_ssl.so未被注释
同步淘汰弱加密套件防降级
仅关协议不够,攻击者可能通过协议降级+弱算法组合绕过。在同一配置块中补充:
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!RC4:!DES:!EXPORT:!PSK:!SRP:!CAMELLIA-
HIGH优先选 AES-GCM、CHACHA20 等现代套件 -
!RC4和!3DES直接封禁已证实存在 POODLE、SWEET32 等漏洞的算法
验证是否真正生效
改完必须验证,不能只靠重启:
- 语法检查:
apachectl configtest或httpd -t,输出Syntax OK才继续 - 本地探活:
openssl s_client -connect yoursite.com:443 -ssl3应失败;-tls1_2应成功并显示Protocol : TLSv1.2 - 线上扫描:SSL Labs 测试页 会明确标出 SSLv3/TLSv1.0 是否仍可协商
其他常见服务器简要对照
不同服务配置逻辑一致,核心都是“显式禁用”而非“隐式启用”:
-
Nginx:在
server块中写ssl_protocols TLSv1.2 TLSv1.3;(注意:Nginx 不支持all -XXX写法,必须白名单) -
Tomcat:在
server.xml的Connector中设sslEnabledProtocols="TLSv1.2,TLSv1.3" -
IIS:通过注册表禁用,路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server,新建DWORD值Enabled = 0











