在过去的几年中,最佳SSL密码套件配置发生了许多变化(例如BEAST和CRIME攻击,RC4​​的弱点)

我的问题是,目前被认为是实现以下目标的最佳SSL密码套件集。


提供尽可能最安全的连接,包括在可能的情况下提供完善的转发安全性并避免已知的漏洞。
与各种常用部署的客户端兼容,包括移动设备(例如Android,iOS,Windows Phone)和台式机操作系统(包括Windows XP / IE6)


评论

支持IE 6 / XP并不是最佳选择。它需要SSL 3.0,无SNI,无前向保密性,并且其最佳密码套件是DES-CBC3-SHA(或RC4-SHA或RC4-MD5,但更糟糕)。如果您可以使用IE * 8 * / XP,那就更好了。它具有上述大多数问题,但支持TLS 1.0,从而降低了针对其他客户端进行降级攻击的风险。

马特(Matt),IE6确实通过“高级”选项下的一个简单复选框(或,我记得是几年前的一个可检查复选框的补丁程序)支持一个TLS 1.0,请参阅如何为Internet Explorer启用SSL v3和TLS v1

@ Anti-weakpasswords不知道!有趣。那么,也许有人需要告诉Qualys。究竟有多少IE 6用户在该方框中打了勾?

@MattNordhoff我相信大多数人都通过2007年的Windows Update补丁对其进行了检查,但是我再也找不到该参考了。但是,我确实在IE6中找到了对TLS 1.0选项的Microsoft答案参考,其中PA Bear说:“如果您使用Microsoft Internet Explorer 6或更高版本[snip],请转到:工具> Internet选项>高级选项卡,向下滚动到“安全性”部分并确保已选中“使用TLS 1.0”选项,然后单击“确定”。“

Qualys(SSL Labs)显示了哪些可以使用默认的开箱即用设置,而哪些不能使用。如果测试的站点禁用了所有SSL和TLS 1.0,则显示除11以外的其他版本的IE均不能正常运行,但是可以通过选中设置中的复选框来使大多数IE配置与TLS 1.1甚至1.2一起使用。

#1 楼

最安全的设置不仅取决于密码,还取决于所使用的tls版本。对于openssl,首选tls 1.1 / 1.2。 BEAST和CRIME是对客户端的攻击,通常可以缓解客户端的攻击,但是也可以缓解服务器端的攻击:


CRIME:只需禁用ssl-compression;就是
BEAST / Lucky13:仅使用TLS 1.1,不使用SSLv3和不使用RC4,请参阅BEAST仍然是威胁吗? (Ivan Ristic)

突破:仅在满足某些条件的情况下有效,请访问Breakattackack.com;轻松且始终有效的缓解措施是取消http-compression(gzip)

的完美设置:SSL总是会在较高级别上影响性能,RC4和其他快速密码套件可能仍然适合静态内容,尤其是从您自己的CDN投放时。

了解OpenSSL的一个很好的指南是《 OpenSSL Cookbook》,其中还详细介绍了PFS,密码套件,tls版本等。pp。有2个博客文章介绍了PFS和实际设置:


SSL实验室:部署向前保密
配置Apache,Nginx和OpenSSL以实现向前保密

密码套件建议也可以在较旧的客户端上启用PFS:

# apache
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

# nginx

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";


有关nginx / ssl手册的详细信息,我想带您转到Nginx + SSL + SPDY指南。

评论


另请参阅NIST SP 800-52 Rev.1草案,该草案对密码套件的选择进行了很多讨论。

–反弱密码
14年2月18日在0:08

RC4损坏,请用缓慢但安全的3DES替换它。请注意,不支持AES的客户端除RSA之外,不支持auth和kex。 AES-CBC-HMAC-SHA256的安全性不比AES-CBC-HMAC-SHA1的安全,不需要对其进行优先级排序。但是您应该将GCM优先于CBC。您不需要SEED或CAMELLIA。因此,我的建议是:-ALL EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EDH + aRSA + AESGCM EECDH + ECDSA + AES EECDH + aRSA + AES EDH + aRSA + AES RSA + 3DES

– Z.T.
2015年5月7日19:35



#2 楼

自撰写此答案的一年以来,Mozilla的指南已定期更新。我下面的所有保留均已考虑在内,因此我会全力推荐该指南。


我建议您阅读Mozilla的服务器端TLS指南。它是全面的,并且他们特别注意与旧客户端的兼容性,有时会损害安全性。 (毕竟,IE 6用户应该能够下载Firefox。)我想强调几件事:支持Windows XP / IE 6并不是最佳选择。我建议您尽可能删除它。它需要SSL 3.0,这使体面的客户端容易遭受降级攻击。编辑:IE 6可以支持TLS 1.0的注释中的反弱密码报告。我不知道有多少百分比的IE 6客户端支持它或启用了它。
支持XP / IE 8不错。它支持TLS 1.0,尽管其最佳密码套件为DES-CBC3-SHA,并且不支持完美的前向保密性或SNI。 (其第二好的密码套件是RC4-SHARC4-MD5。3DES速度很慢,但是RC4存在安全问题。请尽可能避免。)
从安全角度来看,2048位Diffie-Hellman参数是最好的,但是Java 6仅支持1024位参数。 NSA超级计算机可能会或可能不会破坏常见的1024位参数,但是就目前而言,1024位DH或多或少是安全的。您可能需要使用它。 (Java 7支持ECDHE,绕过了DHE参数大小的整个问题。)

Mozilla的主要密码套件列表包括RC4。如上所述,我建议从RC4弱点部分使用3DES代替。

Mozilla的配置示例启用SSL 3.0。正如我所说,我不希望这样做。

Mozilla的配置示例主要推荐2048位DH参数,但它们也提供了1024个选项。

评论


+1指出mozillas建议的弱点

–那边的那个家伙
14年2月18日在11:48

自从这篇文章发布以来,Mozilla已将页面更改为创建3个安全级别,具体取决于您的浏览器版本要求:现代,中级,旧/旧

– higuita
2014年10月16日下午16:31

#3 楼

当然,第一步是使OpenSSL(或您使用的库)保持最新。

但是随着新漏洞的发现和浏览器的升级,此处的答案可能(将)过时。我建议您依靠Mozilla SSL配置生成器来检查应使用的配置。



#4 楼

您在网络服务器上配置的“最佳” SSL密码取决于客户需求。在许多情况下,这将是协议和密码套件选择的一个因素。不确定是否适合您。

您可以配置最佳安全性-仅支持TLS 1.2协议,仅具有完全转发安全性(PFS)的密码和仅AES 256。您可能仅支持椭圆曲线变体ECDHE。您可以选择较新的安全GCM密码,这些密码提供经过身份验证的加密并具有非常好的性能(使用AES-NI指令)。但是,如果您最重要的客户在Windows 7上使用IE8,并且您不能说服他们升级浏览器,那么他们将无法使用您的服务,您将失去客户。

ssllabs.com提供一个Web服务来扫描您的站点,并给出诸如A +,A,B等的等级。该等级基于四个参数---证书,协议支持,密钥交换和密码强度的数字得分(最高100)。如果支持完美向前保密(PFS),严格传输安全性(HSTS)等,它们将获得更高的分数。

请注意,随着浏览器和服务器的使用,分数可能会在一段时间内发生变化。会被修补,出现新的漏洞,发现新的漏洞利用等。之前,ssllabs对未实施BEAST攻击缓解服务器端缓解措施的站点给予较低的评分,但是他们停止这样做,因为他们认为这可以减轻客户端的攻击(落后的Apple除外),但更重要的是,由于缓解措施涉及强制执行RC4(对于TLS 1.0或更低版本的协议),因此RC4比以前认为的要弱得多。

您可以转到在ssl实验室网站上,输入您的网址并获得得分。

SSL实验室报告包括有关“握手模拟”的部分,其中显示了一堆客户端(浏览器,Java,openssl)以及将与您的服务器协商哪些协议,密码套件,密钥大小。如果无法进行协商,它将以红色显示“协议或密码套件不匹配”。您可以查找重要客户使用的配置的握手模拟。例如,您可能会看到条目

IE 8-10/Win7, TLS 1.0, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, FS 256


,但是如果说您将服务器的ssl配置收紧以仅支持TLS 1.2,则该行将显示为/>
IE 8-10/Win7, Protocol or cipher suite mismatch, Fail


但是,随着客户迁移/更新/升级,您可以仅使用TLS 1.2,仅PFS和仅256位的目标来加强安全性

报告提供的重要信息是密码套件是否以服务器首选的顺序。在前一种情况下,将遵循服务器配置中列出的密码顺序---因此,您将首选密码套件放在第一位。将选择服务器和客户端都可以使用的列表中的第一个密码。如果使用Apache,则可以使用指令“ SSLHonorCipherOrder on”启用它。对于nginx,伪指令为“ ssl_prefer_server_ciphers on;”