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

Kri*_*ian 9 apache-http-server https ssl openssl ssl-certificate

我有一个使用单个 IP 地址运行多个域名的 Apache 2.4.7 Web 服务器。由于贵宾犬漏洞,我添加了以下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>
Run Code Online (Sandbox Code Playgroud)

如果我们查看Qualys 的 test,我们会看到服务器仅支持 TLS 1.2。

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

Dan*_*l B 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"
Run Code Online (Sandbox Code Playgroud)

但是,它将排除所有旧浏览器(包括 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
Run Code Online (Sandbox Code Playgroud)

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

为了获得更好的成绩,还需要发送一个 HSTS 标头(为此,您需要启用mod_header):

Header always set Strict-Transport-Security "max-age=63072000;"
Run Code Online (Sandbox Code Playgroud)

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

更新
刚刚检查过,它仍然对 A+ 有益。:) 不过,我相信这需要具有 SHA256 的证书。

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