应配置SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1并配合SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!RC4:!DES:!EXPORT:!PSK:!SRP:!CAMELLIA及SSLHonorCipherOrder on,确保禁用不安全协议与弱算法,且需验证Apache≥2.2.23、OpenSSL≥1.0.1及mod_ssl已启用。

在 Apache 中设置 SSL 协议禁用列表,核心是使用 SSLProtocol 指令明确排除不安全版本,而不是只列出允许的协议。这种方式兼容性好、生效稳定,也是 PCI DSS、等保2.0 等合规要求的推荐做法。
找到并进入正确的配置位置
SSLProtocol 必须写在启用 HTTPS 的上下文中,常见位置包括:
- /etc/httpd/conf.d/ssl.conf(CentOS/RHEL)
- /etc/apache2/mods-available/ssl.conf 或站点专属配置(如 /etc/apache2/sites-enabled/your-site-le-ssl.conf,Ubuntu/Debian)
- /usr/local/apache/conf/extra/httpd-ssl.conf(源码安装)
- 或直接写在
<virtualhost></virtualhost>块内(推荐用于单站点精准控制)
写对禁用指令格式
在 SSLEngine on 下方添加以下行:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
这表示:启用所有协议,再逐个剔除不安全的旧版本。Apache 会自动保留 TLSv1.2(及 TLSv1.3,若环境支持)。
避免使用 SSLProtocol TLSv1.2 这类白名单写法——低版本 Apache 可能忽略未显式声明的协议,导致意外降级或配置不生效。
同步收紧加密套件与协商逻辑
仅禁协议不够,弱密码套件仍可能被协商成功。需在同一配置块中补充:
- SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!RC4:!DES:!EXPORT:!PSK:!SRP:!CAMELLIA
- SSLHonorCipherOrder on(强制服务端优先级,防客户端降级)
- 可选但建议:SSLCompression off(防 CRIME 攻击)
验证是否真正生效
修改后必须执行三步:
- 语法检查:
apachectl configtest或httpd -t - 重启服务:
systemctl restart httpd(CentOS)或systemctl restart apache2(Ubuntu) - 实测验证:
openssl s_client -connect yourdomain.com:443 -tls1_1应失败;-tls1_2应成功并显示Protocol : TLSv1.2
也可用 SSL Labs 的在线工具查看 “Handshake Simulation” 表格,确认 TLSv1.0 和 TLSv1.1 列全部标为 “No”。


















