必须同时配置SSLProtocol和SSLCipherSuite并启用SSLHonorCipherOrder、SSLCompression off,且依赖OpenSSL≥1.1.1支持TLSv1.3与现代套件,否则安全评级不达标。
要在虚拟主机中配置 sslciphersuite 实现现代安全性与旧客户端兼容性的平衡,关键不是“全都要”,而是有策略地裁剪——保留足够支撑主流浏览器和系统(如 windows 7+、android 4.4+、ios 9+)的强套件,同时坚决剔除已知脆弱或过时的算法。
明确目标:只留 TLS 1.2+ 且带前向保密的套件
SSL/TLS 安全性根基在于协议版本和密钥交换机制。TLS 1.0/1.1 和所有不带 ECDHE 或 DHE 的套件(如 RSA 密钥交换类)必须排除。它们既无前向保密,又存在已知漏洞(如 POODLE、Sweet32)。
- 强制启用 TLS 1.2 和 TLS 1.3(如果 Apache 版本 ≥ 2.4.37 且 OpenSSL ≥ 1.1.1):
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 - 禁用所有非 PFS 套件、DES/3DES、RC4、MD5、NULL、EXPORT 类套件
- 避免使用
HIGH、MEDIUM等模糊关键字——它们随 OpenSSL 版本变化,不可控
推荐一套兼顾安全与兼容的 cipher list
以下配置适用于 Apache 2.4.37+(支持 TLS 1.3)、OpenSSL 1.1.1+ 环境,能覆盖 Chrome 56+、Firefox 52+、Safari 10+、Edge 15+ 及主流移动设备,同时通过 PCI DSS、等保 2.0 基线要求:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
- 全部基于 ECDHE,保障前向保密
- AES-GCM 和 ChaCha20-Poly1305 是 AEAD 模式,抗填充攻击,性能好
- 不含 CBC 模式套件(如 AES128-SHA),规避 BEAST、Lucky13 等风险
- 若需兼容极少数旧设备(如 Android 4.4.2 以下),可追加
ECDHE-RSA-AES128-SHA256,但需接受其为 CBC 模式且无 AEAD
必须同步启用 SSLHonorCipherOrder 并验证生效
仅写对 SSLCipherSuite 不够——Apache 默认按客户端优先级协商,你的列表顺序会被忽略。必须在同一个 <virtualhost></virtualhost> 块内显式开启:
SSLHonorCipherOrder on
- 大小写敏感,只能是
on(不是 On、ON 或 1) - 该指令不继承,主配置或 ssl.conf 里设了也无效,必须出现在对应 HTTPS 虚拟主机块中
- 验证是否真起作用:
openssl s_client -connect yoursite.com:443 -tls1_2 -cipher "ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA" 2>/dev/null | grep "Cipher is"
若返回Cipher is AES128-SHA,说明服务器仍让步给弱套件 → 配置未生效
别忘了配套加固措施
密码套件只是 TLS 安全的一环,还需配合其他设置才能形成闭环:
- 启用 HSTS 头(
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"),防止降级攻击 - 配置 OCSP Stapling(
SSLUseStapling on),加快证书状态验证并增强隐私 - 私钥权限设为 600,证书文件权限建议 644,避免泄露
- 用 SSL Labs 全面扫描,关注 “Key Exchange” 和 “Cipher Strength” 两项是否全绿


















