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 Список только поддерживаемых шифров: те, которые соответствуют уровню безопасности, { {1}}, а также минимальную и максимальную версию протокола.
В то время как SecLevel 1 разрешает SSLv3 и TLSv1, MinProtocol - нет.
Источники:
Большинство шифрсуитов совместимы более чем с одним протоколом.
За исключением TLS 1.3, который является полностью отдельным, и SSL 2, который был сломан в течение десятилетий и больше не реализован OpenSSL 1.1.0 (2016), большинство шифрсуитов SSL/TLS могут использоваться более чем в одной версии протокола. Если рассматривать их в хронологическом порядке, то все шифрсуиты, определенные в SSL 3, за исключением странных правительственных (Fortezza), по-прежнему используются в TLS 1.0, а эти плюс новые, определенные в/для 1.0 (в основном EC), но за вычетом намеренно ослабленных "экспортных" (которые в 2006 году уже были устаревшими), по-прежнему используются в 1.1, в котором не определено ни одного нового набора. В версии 1.2 сохраняется большинство наборов из версии 1.1, за исключением single-DES, который считался нерабочим задолго до 2008 года, а также множество новых наборов (использующих AEAD и/или SHA2).
Как указано на странице man для SSL_CIPHER_description, которая связана со страницей для шифров:
<версия протокола>
Минимальная версия протокола, которую поддерживает шифрсуит, например TLSv1.2. Обратите внимание, что это не всегда совпадает с версией протокола, в которой шифрсуит был впервые определен, поскольку некоторые шифрсуиты имеют обратную совместимость с более ранними версиями протокола.
Обратите внимание на "минимум". 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).