如何在 Apache 中禁用 TLS 1.0 和 TLS 1.1?

在 SSL 配置里设 SSLProtocol -all +TLSv1.2 +TLSv1.3(或 all -SSLv3 -TLSv1 -TLSv1.1),重启 Apache;用 ssllabs 或 openssl s_client 验证。本文给出各发行版配置位置与验证方法。

最佳实践
如何在 Apache 中禁用 TLS 1.0 和 TLS 1.1?封面

做法:找到 Apache 的 SSL 配置,把 SSLProtocol 改为 SSLProtocol -all +TLSv1.2 +TLSv1.3(白名单写法,推荐)或 all -SSLv3 -TLSv1 -TLSv1.1(黑名单写法),重启生效。TLS 1.0/1.1 已被各大标准废弃(PCI-DSS、主流浏览器均不再支持),禁用是安全合规的基本要求。

配置位置

  • Debian/Ubuntu:/etc/apache2/mods-available/ssl.conf(全局)或站点 default-ssl.conf
  • RHEL/CentOS:/etc/httpd/conf.d/ssl.conf

修改配置

# 推荐:白名单写法,语义最明确
SSLProtocol -all +TLSv1.2 +TLSv1.3

# 黑名单写法(等价)
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

顺带把弱加密套件也收一收:

SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder on

重启生效:

sudo apachectl configtest && sudo systemctl restart apache2

验证

# 应失败(连接被拒/握手失败)
openssl s_client -connect your-domain:443 -tls1
openssl s_client -connect your-domain:443 -tls1_1

# 应成功
openssl s_client -connect your-domain:443 -tls1_2

在线全面体检:SSL Labs(ssllabs.com/ssltest)跑一遍,目标 A/A+。

兼容性提醒

  • TLS1.2 自 2008 年起普及,正常现代客户端全支持
  • 真正会断的只有:IE10 及以下、Android 4.3 及以下、Java 6/7 老客户端、部分老旧 IoT/工控设备——有这类客户端要单独评估

Nginx 对照

ssl_protocols TLSv1.2 TLSv1.3;

观测云对照

握手失败的客户端看得见。 禁用旧协议后,Apache 错误日志里的 SSL 握手失败记录经 DataKit 采集统计——如果某类老客户端持续失败,数据会告诉你影响面有多大,再决定是否开例外。

常见问题(FAQ)

Q:多个虚拟主机可以分别配协议吗?
A:SSLProtocol 可在 vhost 级别覆盖,但 SNI 之前的客户端以默认站点配置为准,实际效果以全局配置最稳。

Q:改完重启网站打不开?
A:先看是不是写法错误(apachectl configtest);旧客户端被拒之门外是预期行为。

Q:TLS 1.3 要不要开?
A:OpenSSL 1.1.1+ 的 Apache 2.4.38+ 支持,开了握手更快更安全,建议开。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台