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


8

我有一台使用单个IP地址运行多个域名的Apache 2.4.7 Web服务器。由于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的适当设置是什么,以便该站点可以支持较旧的浏览器并保持良好的安全性?

Answers:


13

根据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,包括对不带 PFS的RC4的回退(最后输入):

: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月更新
我最近找到了Mozilla提供的另一种SSL配置生成器。它会对密码进行排序,以使Chrome不会说您使用的是不推荐使用的密码套件。


3

我在Cipherli.st上找到了此建议:

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.