Apache2+Ubuntu16环境SSL套件配置:带/不带RC4的区别及选型
关于Apache2(Ubuntu 16)中SSLCipherSuite是否加入RC4的明确解答
先给你一个斩钉截铁的结论:绝对不要在你的SSLCipherSuite配置里加入RC4,那位SSL技术人员的说法完全正确——RC4已经是被彻底淘汰的高危加密算法,加入它会直接把你的服务器安全等级拉到极低水平。
为什么RC4绝对不能用?
RC4存在多个致命的密码学漏洞,早在2013年就被公开的Bar Mitzvah攻击攻破,后续又陆续发现了更多针对它的攻击手段。现在所有主流的安全合规标准(比如PCI DSS)、TLS规范(TLS 1.2及以上)都明确禁止使用RC4。哪怕是为了兼容老旧客户端,现在也有更安全的替代方案,完全没必要为了那几乎可以忽略的老旧设备牺牲整个服务器的安全性。
带RC4 vs 不带RC4的配置差异
加入RC4的配置
- 会允许客户端通过
RC4-SHA等RC4类加密套件建立TLS连接 - 安全扫描工具(比如Qualys SSL Labs)会直接标记为严重漏洞,服务器SSL评级大概率降到C级甚至更低
- 仅能兼容Windows XP SP2及更早、10年以上的老旧浏览器这类几乎已经退出市场的设备
- 完全无法满足完美前向保密(PFS)的要求(你参考的文章里的PFS配置也不会包含RC4)
不加入RC4的配置
- 仅使用现代安全的加密套件,比如基于AES-GCM、CHACHA20-POLY1305的套件,轻松支持完美前向保密
- 符合所有当前的安全合规要求,SSL Labs评级可以轻松达到A+
- 兼容99%以上的现代客户端(Windows 7及以上、近10年的主流浏览器版本)
给你Ubuntu 16上Apache2的推荐安全配置(支持PFS)
结合你提到的完美前向保密需求,这个配置既安全又符合标准:
# 优先选择支持PFS的安全套件 SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH # 禁用所有老旧的不安全协议,仅保留TLS 1.2和TLS 1.3(若你的Apache版本支持) SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # 让服务器优先选择我们指定的安全套件 SSLHonorCipherOrder On # 强制客户端使用HTTPS,提升长期安全 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
注意事项
- 更新依赖版本:Ubuntu 16的默认Apache2和OpenSSL版本可能偏旧,建议执行
sudo apt-get update && sudo apt-get upgrade apache2 openssl更新到最新可用版本,确保支持TLS 1.3和最新的安全套件 - 验证配置正确性:修改完配置后,用
sudo apache2ctl configtest检查语法,无错误后重启服务sudo systemctl restart apache2 - 扫描安全等级:用SSL Labs的测试工具扫描你的域名,确认没有RC4相关漏洞,评级达到A+
- 不要妥协安全兼容老旧设备:如果确实有极少量老旧设备无法连接,建议设置单独的子域名做降级处理,而不是降低主站的安全标准
内容的提问来源于stack exchange,提问作者Edward
相关产品推荐
相关产品推荐

