
Текущая версия 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).