Apache 中的 SSLCipherSuite 设置用于支持 TLS 1.0、1.1 和 1.2

Apache 中的 SSLCipherSuite 设置用于支持 TLS 1.0、1.1 和 1.2

我有一个 Apache 2.4.7 Web 服务器,使用单个 IP 地址运行多个域名。由于 Poodle 漏洞,我添加了以下SSLCipherSuite行。一段时间内它运行良好,但用户报告在 Firefox 中访问页面时出现问题。不幸的是,要求用户切换浏览器不是一个选项,所以我需要更改设置以支持 TLS 1.0、1.1 和 1.2。

当前设置为:

<VirtualHost ZYX.XYZ.org:443>
DocumentRoot /var/www/ZYX.XYZ/www
ServerName ZYX.XYZ.org

<Directory "/var/www/ZYX.XYZ/">
  allow from all
  Options -Indexes
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
SSLCertificateFile /etc/apache2/ssl/XYZ.org.crt
SSLCertificateKeyFile /etc/apache2/ssl/XYZ.org.key
SSLCACertificateFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
</VirtualHost>

如果我们看看Qualys 测试,我们看到服务器仅支持 TLS 1.2。

启用 TLS 1.0、TLS 1.1 和 TLS 1.2 的适当设置是什么,以便网站可以支持旧版浏览器,并保持良好的安全级别?

答案1

根据 SSLLabs 的说法,以下配置是(或曾经是)最佳配置:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA"

但是,它将排除所有较旧的浏览器(包括 Opera Mini!),因为它缺少非 PFS 和 RC4 密码套件。您可以附加以下内容(当然是在结束的引号之前)以启用 RC4,包括回退(最后一项)到 RC4没有预应力混凝土 (PFS)

:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:RC4-SHA

您应该鼓励用户尽快升级。RC4 已损坏,不应再使用,尤其是在没有 PFS 的情况下。

为了获得更好的成绩,还要发送 HSTS 标头(要使此功能正常工作,您需要启用mod_header):

Header always set Strict-Transport-Security "max-age=63072000;"

此配置不适用于 Apache <2.2.26,因为它不支持椭圆曲线加密。

更新
刚刚检查过,它仍然适用于 A+。:) 不过,我相信这需要带有 SHA256 的证书。

2015 年 10 月更新
我最近发现另一个 SSL 配置生成器,由 Mozilla 提供。它对密码进行排序,以便 Chrome 不会提示您正在使用已弃用的密码套件。

答案2

我发现这个建议密码列表

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off 
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 

答案3

 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

禁用 SSLv3 密码套件会禁用 SSL3.0 引入的所有密码套件。由于这些密码套件也用于更高版本的 SSL(TLS1.0+),而新密码套件大多是随 TLS1.2 引入的,因此此设置会使 TLS1.0 和 TLS1.1 不可用,因为没有共享密码。因此,协议实际上被限制为 TLS1.2。

openssl ciphers -V <cipher>如果您使用密码字符串调用,您会发现所有可用的密码都需要 TLS1.2。

例如:openssl ciphers -V TLSv1.2

答案4

请参阅 SSLOpenSSLConfCmd 指令Apache 2.4 配置

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

相关内容