当前的 OpenSSL 版本
OpenSSL 1.1.1d 10 Sep 2019 (Library: OpenSSL 1.1.1g 21 Apr 2020)
当前openssl.cnf
配置
在文件的顶部
openssl_conf = default_conf
在文件的底部
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=1
没有Ciphersuites
设置指令。
支持的密码列表与配置不同
但是,当我询问启用的密码时openssl ciphers -s -v
,我得到的密码如下:
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
我应该定义一个Ciphersuites
设置,还是 openssl ciphers -s -v
以某种方式不可靠?
文档
-s仅列出支持的密码:与安全级别、最小和最大协议版本一致的密码。
虽然 SecLevel 1 允许 SSLv3 和 TLSv1,但 MinProtocol 不允许。
资料来源:
大多数密码套件与多个协议兼容。
除了完全独立的 TLS 1.3 和已被破解数十年且 OpenSSL 1.1.0 (2016) 起不再实现的 SSL 2 之外,大多数 SSL/TLS 密码套件可以在多个协议版本中使用。按照时间顺序,SSL 3 中定义的所有密码套件,除了奇怪的政府密码套件 (Fortezza) 仍在 TLS 1.0 中使用,以及那些加上在/for 1.0 中定义的新密码套件(主要是 EC),但减去故意削弱的 ' export' 套件(在 2006 年已被弃用)仍在 1.1 中使用,它没有定义任何新套件。1.2 保留了 1.1 中的大部分套件,减去了在 2008 年之前被认为已损坏的单 DES,以及许多新套件(使用 AEAD 和/或 SHA2)。
如SSL_CIPHER_description 的手册页中所述,该手册与密码相关:
注意“最低”。
DHE-RSA-AES256-SHA
在 SSL3 TLS1.0 TLS1.1 和 TLS1.2 中都可以使用,所以它的最低版本是 SSL3。使用 1.2 中的旧套件不是首选或最佳实践,特别是因为使用 AEAD(首先是 GCM 和 CCM,然后是 ChaCha/Poly)的新套件至少在没有 encrypt-then-mac (RFC7366) 的情况下具有更好的安全属性它直到 2014 年才发布并且没有广泛实施,因为 AEAD 已经存在,但是 OpenSSL 允许并支持它,并且
ciphers
命令的输出反映了这一点。所以是的,如果您需要 1.2,您还可以将密码套件限制为 AEAD,而兼容性几乎没有降低(尽管有一些实现,例如 Java 7,支持 1.2,但仅适用于旧套件而不是新的 AEAD 套件)。