一聚教程网:一个值得你收藏的教程网站

热门教程

Apache 中 TLS 配置如何升级到 TLS 1.3 协议提升安全性

时间:2026-08-30 20:19:49 编辑:袖梨 来源:一聚教程网

Apache启用TLS 1.3需同时满足OpenSSL≥1.1.1、Apache≥2.4.37且mod_ssl链接新版OpenSSL;配置须设SSLProtocol +TLSv1.2 +TLSv1.3并指定TLS 1.3专用AEAD密钥套件,否则协商失败。

Apache 升级到 TLS 1.3 能显著提升连接安全性与握手速度,但不是改一行配置就能生效——它依赖底层 OpenSSL 版本、Apache 编译环境和配置项的协同配合。

确认基础环境是否支持

TLS 1.3 由 OpenSSL 实现,Apache 只是调用模块。必须同时满足:

  1. OpenSSL ≥ 1.1.1(推荐 1.1.1w 或 3.0.x+)
  2. Apache ≥ 2.4.37(原生支持 TLS 1.3 的最低版本)
  3. mod_ssl 已启用且编译时链接的是新版 OpenSSL

检查命令:

openssl version -a —— 查看 OpenSSL 实际版本

httpd -V | grep -i opensslldd $(which httpd) | grep ssl —— 确认 Apache 使用的 OpenSSL 路径与版本

若显示 OpenSSL 1.0.2 或更低,需重装 OpenSSL 并重新编译 Apache,或升级系统(如 Ubuntu 20.04+/RHEL 8+ 默认已满足)。

配置 TLS 1.3 启用与协议控制

在虚拟主机或主 SSL 配置块中(如 /etc/apache2/sites-enabled/default-ssl.conf),设置明确的协议白名单:

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3

注意:不能只写 +TLSv1.3,否则会禁用 TLS 1.2,导致旧客户端(如部分 Java 8 应用、Android 4.4 浏览器)无法连接;也不要用 SSLProtocol TLSv1.3 这种写法,它会彻底关闭其他版本。

同时确保:SSLHonorCipherOrder on,让服务器按你指定顺序选择套件,避免客户端强制协商弱算法。

设置兼容且安全的密钥套件

TLS 1.3 使用独立的一组 AEAD 套件,不能与 TLS 1.2 混用。需分两层配置:

  1. 对 TLS 1.2 兼容:保留 ECDHE-GCM/CHACHA20 类前向保密套件
  2. 对 TLS 1.3 强制:显式加入其专用套件

推荐写法:

SSLCipherSuite TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305

该组合既满足 TLS 1.3 握手需求,又向下兼容 TLS 1.2 客户端,同时全部支持前向保密(PFS)和现代加密模式(AEAD)。

验证是否真正生效

重启 Apache 后,用三种方式交叉验证:

  1. OpenSSL 命令测试openssl s_client -connect yourdomain.com:443 -tls1_3 2>/dev/null | grep "Protocol ",输出应为 Protocol : TLSv1.3
  2. 浏览器开发者工具:访问站点 → F12 → Security 标签页 → 查看“Connection”详情
  3. SSL Labs 在线检测(https://www.ssllabs.com/ssltest/):可清晰看到协议支持列表、握手延迟、密钥套件优先级等

若 TLS 1.3 显示为“Not supported”,重点排查 OpenSSL 版本、Apache 编译链接、配置语法错误(如漏掉 +TLSv1.2)三处。

热门栏目