Ошибка с использованием OpenSSL с SOCAT - SSL3_CHECK_CERT_AND_ALGORITHM : ключ DH слишком маленький

Ваша проблема не имеет отношения к scp. Она связана с inotify, интерфейсом ядра, который используемый для инициирования действий при событиях в файловой системе. И вы, очевидно. срабатывает не на то событие. Прочитайте man-страницу incrontab , чтобы понять, как работает система.

Если ваш сценарий обработки уже срабатывает, когда файл не был завершен, я предполагаю, что вы срабатываете на событие IN_CREATE. Вы можете изменить соответствующую запись в incrontab, чтобы срабатывать на событие IN_CLOSE_WRITE.

1
23.08.2018, 17:28
1 ответ

Во-первых, вы уверены, что socat использует OpenSSL 1.1.0? Исходный код (с сайта socat.org )1.7.2.4, исходный код (, выпущенный в 2014 г. ), несовместим с OpenSSL 1.1.0 (, выпущенным в 2016 г. ), в который были внесены значительные изменения API. Проверьте ldd $(which socat). Являются ли (и )вашим socat и OpenSSL из стандартных репозиториев, других сборщиков/упаковщиков или собраны из исходного кода?

В любом случае, хотя «что нового» не говорит об этом, и если предположить, что патч «sig» не меняет его, исходный код 1.7.2.4 (upstream )по умолчанию использует 512-битные -битные параметры DH..Это действительно слишком мало --было известно, что его можно сломать еще до Logjam, и неприемлемо для любого клиента libssl начиная с 1.0.1n или 1.0.2b и выше (выпущенного в 2015 году -06)(и любого 1.1.0, первый выпуск 2016 -08 ).

AFAICS ваши альтернативы:

  • обновить socat как минимум до версии 1.7.3.0 (, которая в апстриме имеет 1024 -бит ); 3.1+ с разрядностью 2048 -еще лучше

  • генерировать или получать откуда-то параметры DH размером не менее 1024 бит (2048 лучше подходит для большинства клиентов, включая ваш, хотя некоторые клиенты могут иметь проблемы, например, устаревшие версии Java )и добавьте их в файл certвашего сервера.

    Вы можете сгенерировать параметры DH с помощью openssl dhparam $n >file, где $nравно 1024 или 2048. Если это слишком медленно, вы можете добавить -dsaparam.

  • то же самое, но поместите параметры в отдельный файл, настроенный на сервере. На справочной странице указано, что эта опция — dhparams=<file>, но код говорит, что это dh=, и тестирование подтверждает последнее.

  • настроить сервер или клиент, или и то, и другое в некоторой комбинации, чтобы они не согласовывали набор шифров, использующий DHE; поскольку здесь виноват ваш сервер, лично я бы настроил только сервер. Опять же, на странице руководства написано cipher, но на самом деле ciphers. Поскольку 1.7.2.4 не устанавливает параметры «tmp _ecdh», а (AFAICT )не может использовать 1.1.0, он не будет поддерживать ECDHE, что означает, что без DHE ваши соединения не будут иметь Идеальная прямая секретность. Если вы можете принять это ограничение, использование ,ciphers='DEFAULT:!DHE'на сервере будет простым решением.

    (1.7.3.0 установите «tmp _ecdh» и поддержите ECDHE, что позволит избежать проблемы здесь, даже если они не используют по умолчанию DH -1024 или лучше, потому что комплекты ECDHE предпочтительнее DHE, поэтому Будет выбран ECDHE, и тогда параметры DHE не используются и не имеют значения.)

0
28.01.2020, 00:30

Теги

Похожие вопросы