为什么 TLS 协议在没有 SSLv3 密码套件的情况下无法工作?

信息安全 tls
2021-08-22 00:34:06

在从我们的ssl.conf文件中禁用 SSLv3 以克服 Poodle 漏洞的同时,我还使用!SSLv3. 禁用密码后,我们无法通过 Firefox 和 IE 访问该网站。以下是来自 Firefox 的错误消息:

An error occurred during a connection to xxxx.example.com.
Cannot communicate securely with peer: no common encryption algorithm(s).
(Error code: ssl_error_no_cypher_overlap)

所以我们回过头来启用 SSLv3 密码套件,一切都开始正常工作了。目前,SSLv3 协议已禁用,但 SSLv3 密码已启用。

  • 我是否正确地假设我们在其中一个浏览器中遇到了错误,因为浏览器中没有 TLS 密码?
  • 使用的协议是否可能是 TLSv3,但密码是 SSLv3?

SSLProtocol all -SSLv2 -SSLv3
#SSLProtocol -all +SSLv3
#   SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:!MEDIUM:!LOW

我们可以在办公室升级浏览器,但不能在客户的机器上升级。是否禁用了 SSLv3 协议,但启用了密码是推荐的设置?换句话说,我们可以通过 TLS 和 SSLv3 密码进行连接吗?

3个回答

我从您的ssl.conf设置推测您正在使用mod_ssl来自 Apache Web 服务器的模块。该模块依赖于 OpenSSL 来提供加密引擎。

从有关OpenSSL的文档中,它指出:

协议版本:SSLv2、SSLv3、TLSv1.2。TLSv1.0 密码用 SSLv3 标记TLSv1.1 未添加新密码

您可以通过运行以下命令来确认上述内容:

$ openssl ciphers -v 'TLSv1' | sort
ADH-AES128-SHA          SSLv3 Kx=DH       Au=None Enc=AES(128)  Mac=SHA1
ADH-AES256-SHA          SSLv3 Kx=DH       Au=None Enc=AES(256)  Mac=SHA1
ADH-CAMELLIA128-SHA     SSLv3 Kx=DH       Au=None Enc=Camellia(128) Mac=SHA1
ADH-CAMELLIA256-SHA     SSLv3 Kx=DH       Au=None Enc=Camellia(256) Mac=SHA1
...

这意味着如果您的配置文件不包括密码套件 SSLv3,那么您实际上也移除了对 TLSv1.0 的支持!由于对 SSLv2 的支持也已被删除,因此您只能使用 ciphersuite TLSv1.2:

$ openssl ciphers -v 'ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:!MEDIUM:!LOW:!SSLv3' | sort
AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD
AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256
AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD
AES256-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA256
...

从上面不难看出为什么不应该密码套件中删除 SSLv3。禁用 SSLv3 协议足以保护您的客户端免受 POODLE 漏洞的影响。

您遇到的错误消息可能是因为您使用的是较旧的浏览器,例如 Firefox < 27.0 或 Internet Explorer < 11.0,因为这些版本默认不支持 TLSv1.2。

POODLE 是协议问题,而不是密码问题。(事实上​​,它适用于 AES 和 DES,因此您可以看到它独立于所使用的密码。)禁用 SSLv3 密码是没有必要的(而且,正如您所发现的,这可能是不可取的)。仅禁用协议就足以防止 POODLE。

我写了一篇关于如何在 Qualys SSL 测试中获得 A+ 的文章,其中包含有利 SSL 配置的详细信息:

ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

这是一个 NginX 配置,因此您可能需要稍微更改格式,因为看起来您使用的是 Apache。这可以通过更广泛的配置更改来实现,以强化您的 SSL 配置。

来源:https : //scotthelme.co.uk/a-plus-rating-qualys-ssl-test/