我想知道如果我将我的 openssl 服务器配置为明确使用 TLSv1.2,是否还必须提及不要使用 3DES(通过在字符串中添加“!3DES”),或者明确使用 TLSv1.2 会删除对 3DES 的支持。
从这链接我可以看到 TLS1.2 的可用密码列表中没有 3DES。所以我猜它不支持?
我使用的字符串是"HIGH+TLSv1.2:!MD5:!SHA1"
答案1
TLS 1.2 可与为 SSL 3.0 及更高版本定义的任何密码一起使用。这包括 3DES (DES-CBC3) 密码。你指的是不是一个列出哪些密码可与哪个 SSL/TLS 版本一起使用的列表,而是一个列出在哪个 SSL/TLS 版本中引入了密码的列表。
证明:
terminal_1 $ openssl s_server -cipher '3DES' -cert cert.pem -key key.pem
...
terminal_2 $ openssl s_client -connect 127.0.0.1:4433
...
Protocol : TLSv1.2
Cipher : ECDHE-RSA-DES-CBC3-SHA
...
更多证据:TLS 1.2 标准 (RFC 5246)附录 A.5 列出了许多可用于 TLS 1.2 的密码,其中包括几个 3DES 密码。
我使用的字符串是“HIGH+TLSv1.2:!MD5:!SHA1”
使用此密码字符串,您仅允许使用 TLS 1.2 引入的密码。由于 TLS 1.2 未添加任何新的 3DES 密码,因此此字符串不会使用 3DES 密码。但是,由于这些旧客户端不支持您提供的任何密码,因此任何 TLS 1.0 或 TLS 1.1 客户端都将无法连接到服务器。虽然现代浏览器都支持 TLS 1.2,但有些应用程序仍然不支持。对于较旧的 Java 应用程序或 Mac OS X 上基于 OpenSSL 的应用程序尤其如此,因为它们附带的 OpenSSL 版本非常旧。
答案2
你是对的,TLSv1.2 不支持 DES:
$ openssl ciphers -tls1 -v | grep TLSv1.2
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384
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
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256
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
您不必明确拒绝 DES,因为在禁用旧套件的情况下它将不可用。