最可靠方式是在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,是禁用不安全旧协议最可靠的方式。关键不是只写“启用哪些新协议”,而是用“全量排除”语法确保旧协议彻底失效。
找到 HTTPS 对应的配置块(如 <VirtualHost *:443> 或全局 ssl.conf),在 SSLEngine on 下方添加:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1TLSv1.2 白名单更稳妥——旧版本 Apache 可能忽略纯白名单配置mod_ssl 已加载:LoadModule ssl_module modules/mod_ssl.so 未被注释仅关协议不够,攻击者可能通过协议降级+弱算法组合绕过。在同一配置块中补充:
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!RC4:!DES:!EXPORT:!PSK:!SRP:!CAMELLIAHIGH 优先选 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
不同服务配置逻辑一致,核心都是“显式禁用”而非“隐式启用”:
server 块中写 ssl_protocols TLSv1.2 TLSv1.3;(注意:Nginx 不支持 all -XXX 写法,必须白名单)server.xml 的 Connector 中设 sslEnabledProtocols="TLSv1.2,TLSv1.3"
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server,新建 DWORD 值 Enabled = 0