Лучшее объяснение, которое я нашел, находится на вики-странице Debian по адресу https://wiki.debian.org/ContinuousIntegration/TriagingTips/openssl-1.1.1, в которой говорится:
В Debian по умолчанию установлены более безопасные значения. Это делается в конфигурационном файле /etc/ssl/openssl.cnf. В конце файла:
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
Это может привести к таким ошибкам, как:
dh key too small
ee key too small
ca md too weak
Это вызвано тем, что SECLEVEL 2 устанавливает уровень безопасности 112 бит. Это означает, что ключи RSA и DHE должны иметь длину не менее 2048 бит. SHA-1 больше не поддерживается для подписей в сертификатах, и вам нужен как минимум SHA-256. Обратите внимание, что центры сертификации прекратили выпуск сертификатов, которые не соответствовали этим требованиям, в январе 2015 года, а с января 2017 года все действующие сертификаты CA должны соответствовать этим требованиям. Однако есть сертификаты, сгенерированные частными центрами сертификации или входящие в набор тестов, которые не соответствуют этим требованиям.
SECLEVEL 1 был значением по умолчанию в предыдущих версиях и имеет 80-битный уровень безопасности, требующий 1024-битного RSA key.
Проблема "dh key too simple" полностью подробно описана в https://weakdh.org/ Здесь говорится:
Diff ie - Обмен ключами Хеллмана - это популярный алгоритм шифрования c, который позволяет протоколам Inte rnet согласовывать общий ключ и согласовывать безопасное соединение. Это фундаментально для многих протоколов, включая HTTPS, S SH, IPse c, SMTPS, и протоколов, основанных на TLS.
Мы обнаружили несколько слабых мест в том, как обмен ключами Diff ie -Hellman развернуто:
[..]
Что мне делать? Если вы запускаете сервер…
Если у вас есть веб-сервер или почтовый сервер, вы должны отключить поддержку экспортных наборов шифров и использовать 2048-битную группу Diff ie -Hellman.
Что делать?
Старайтесь не менять SECLEVEL. Лучше оставить его в масштабе всей системы как есть (SECLEVEL = 2), но вместо этого попытайтесь исправить конкретную c проблему с подключением, которая у вас есть.
Первый шаг - связаться с администратором службы, которую вы пытаетесь для подключения к TLS и предоставьте ему указанные выше сведения, чтобы он внес необходимые изменения, чтобы он больше не попадал в уязвимость "weak dh".
Если это окажется невозможным, или пока что до разрешения, просто установите для соединения "SSL" шифры на значение DEFAULT@SECLEVEL=1
. К сожалению, это снижает безопасность, но по крайней мере влияет только на это соединение c, а не на всю систему. Вам не нужно жестко кодировать список шифров: значение выше заставит все работать точно так же, как раньше.
У меня была точно такая же проблема, и я решил ее таким образом, потому что он не мог убедить удаленную сторону изменить своего TLS-сервера или предоставить сертификаты хотя бы с использованием RSA 2048 бит.