Нужно ли настраивать Ciphersuites на openssl после настройки MinProtocol и CipherString?

Нужно ли настраивать Ciphersuites на openssl после настройки MinProtocol и CipherString?

Текущая версия 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в каком-то смысле ненадежна?

Документация

Перечислить только поддерживаемые шифры: соответствующие уровню безопасности, а также минимальной и максимальной версии протокола.

В то время как SecLevel 1 разрешает SSLv3 и TLSv1, MinProtocol этого не делает.

Источники:

решение1

Большинство шифронаборов совместимы с несколькими протоколами.

За исключением 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).

Как указано вСтраница руководства для SSL_CIPHER_descriptionкоторый связан с тем, что касается шифров:

<версия протокола>
Минимальная версия протокола, которую поддерживает набор шифров, например TLSv1.2. Обратите внимание, что это не всегда то же самое, что версия протокола, в которой набор шифров был впервые определен, поскольку некоторые наборы шифров обратно совместимы с более ранними версиями протокола.

Обратите внимание, что «minimum» 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).

Связанный контент