这些胡说八道是什么意思?我可以对我的服务器上的 TLS 1.0 javascript 注入漏洞做些什么?
我应该改成什么?我应该忽略 BEAST SSL 漏洞并继续偏爱 AES 吗?
深入了解不同的密码选择及其影响:配置 SSL 证书后,我应该在 Web 服务器中使用哪些密码?
密码串
让我们获取这些信息并在我编写此代码时检查默认的 Apache 密码字符串:
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
这基本上允许任何身份验证的密码。匿名 Diffie-Hellman 交换 ( ADH) 被排除在考虑之外 ( !),但其他所有内容都只是堆在那里。事实上,ALL在开始时给予权利,只有!ADH在产生影响。一切都已经包括在内。导出密码、低质量密码(40/56 位等)都是公平的谈判游戏。
如果我们想非常简单,RC4(对称)、RSA(非对称交换和签名)和 SHA1(对称哈希)是普遍支持的。RC4 有一些学术上的弱点,但它不受 BEAST 攻击的影响,而且它也是我的浏览器与 Google 协商的内容。
SSLCipherSuite 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'
核实:
$ openssl ciphers -v 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'
ECDHE-RSA-RC4-SHA SSLv3 Kx=ECDH Au=RSA Enc=RC4(128) Mac=SHA1
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
这需要设置它并忘记它。我把 ECDHE-RSA-RC4-SHA 放在前面是因为我喜欢使用完美前向保密,但它并没有得到普遍支持。
但是,为了将来参考,如果您正在构建一个一般指定密码的字符串,这里还有一些其他的事情要查看:
- 没有弱“导出”密码:
!EXP
- 没有未经身份验证的 Diffie-Hellman 交换:
!ADH
- 我们没有使用预共享密钥,所以
!PSK
之后添加您感兴趣的密码。如果您需要限制某些内容,请使用更多排除项。+使用符号而不是冒号选择特定组合。例如:
$ openssl ciphers -v '!ADH:AES+DH'
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
与以下各项不同:
$ openssl ciphers -v '!ADH:AES:DH'
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
AECDH-AES256-SHA SSLv3 Kx=ECDH Au=None Enc=AES(256) Mac=SHA1
ECDH-RSA-AES256-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA1
ECDH-ECDSA-AES256-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
ECDHE-ECDSA-AES128-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
AECDH-AES128-SHA SSLv3 Kx=ECDH Au=None Enc=AES(128) Mac=SHA1
ECDH-RSA-AES128-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA1
ECDH-ECDSA-AES128-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1
EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1
EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1
EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512) Au=RSA Enc=DES(40) Mac=SHA1 export
EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512) Au=DSS Enc=DES(40) Mac=SHA1 export
这是一个有价值的问题吗?
我们正在权衡学术漏洞。RC4 在学术上比 AES 弱。如果您让客户端运行不需要的代码,则 AES 在学术上较弱。
了解风险是件好事,但在进行了一些搜索之后,由于 PCI-DSS 扫描,人们遇到了这个问题。审计员在他们的自动化工具中看到了这一点并做出了反应。如果最终用户正在运行不需要的代码,那么就会发生更大的根本问题:您的站点受到 XSS 之类的攻击,您需要修复该问题,或者他们的机器受到攻击(直接或从另一个站点运行跨站点代码)并且攻击者可能会运行更多的恶意软件。现代浏览器应该通过在连接开始时踢出一个字节数据包来调整填充并消除攻击。
在很多方面,它真的在客户端。如果您要关心客户隐私,那么在我看来,确保您的网站不被泄露是更重要的问题。鉴于此,SSL 对在本地运行恶意软件的客户端没有多大帮助,所以现在我们回到更强大的 AES 密码。
...但是,为了在没有争论的情况下通过审核并观察客户的支持(基本上是谷歌试图做的事情),RC4 让您今天实现目标。希望明天有更高版本的 TLS 让每个人都能到达那里,但这种进展实际上是缓慢的。