openssl-security-level

Global

Порог стойкости OpenSSL для всего узла
в конфигурации это строкаopenssl-security-level 1внутри блока Global
Общий порог, ниже которого узел не работает

С версии 6.0 PowerMTA несёт внутри OpenSSL 3.0, а тот отказывается от многого, что раньше проходило: слабых алгоритмов подписи, коротких ключей — в том числе ключей DKIM, — и версий протокола ниже 1.2. Порог задаётся числом от 0 до 5, умолчание — 1.

Симптом — узел не стартует. Слишком слабый ключ или сертификат останавливает запуск, а не роняет одно соединение. Руководство приводит две характерные ошибки: ca md too weak — сертификат подписан устаревшим алгоритмом; tlsv1 alert internal error с номером 80 — слишком слабый сертификат у той стороны.

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

Есть точечная замена. Запись DEFAULT:@SECLEVEL=0 внутри списка шифров — например smtp-tls-ciphers — снижает уровень только для него. Оба способа работают по месту в файле: снижение должно стоять выше той строки с сертификатом, к которой относится.

Мы видим ту же механику с другой стороны. Проверяя узел командой openssl s_client, легко получить отказ от своего клиента, а не от узла: no protocols available — это местный уровень безопасности отказался предлагать старую версию. Снимается тем же приёмом: -cipher ‘DEFAULT:@SECLEVEL=0’.

Главная ловушка — снизить порог и оставить навсегда. Он общий: одна слабая цепочка у одного приёмника опускает планку всему узлу, включая подпись писем и управляющий интерфейс. Строка не напоминает о себе ничем — она просто есть, и через год никто не помнит, ради чего.
Что делает Хаб. Не пишет: узлы ставятся начисто, ключи и сертификаты выпускаются нами и порог проходят. Строка нужна при переносе чужой конфигурации на новый узел — и там её стоит считать временной, с задачей на перевыпуск.
Рекомендуемые значения

Снижение — крайняя мера, и лучше точечная:

Значение Когда
1 (умолчание) всегда
0 узел не стартует, перевыпустить прямо сейчас нельзя
2 и выше внешнее требование к стойкости, с проверкой доставки

Точечная замена общему снижению — DEFAULT:@SECLEVEL=0 в нужном списке шифров, выше соответствующей строки с сертификатом.

Диапазон, умолчание 1, обе ошибки-примера и позиционность — из руководства (§ 3.3.1.51). Совет считать снижение временным и заводить задачу на перевыпуск — наш. Замечание про отказ своего клиента при проверке — наше наблюдение.
Пример в конфигурации
# крайняя мера: узел не стартует со старым сертификатом,
# перевыпуск запланирован — снять до конца квартала
openssl-security-level 0smtp-server-tls-certificate /etc/pmta/legacy.pem
Порядок важен: снижение стоит выше строки с сертификатом, к которой относится. Комментарий со сроком — часть меры, иначе она останется навсегда.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Снижают порог на весь узел из-за одного слабого сертификата

§ 3.3.1.51

Чем чреватоПланка опускается сразу для всего: подписи писем, приёма, отправки и управляющего интерфейса. Ради одной цепочки ослабляется узел целиком.
Как заметитьВ файле стоит openssl-security-level 0, а слабое место одно.
Как правильноИспользовать DEFAULT:@SECLEVEL=0 в нужном списке шифров — выше соответствующей строки с сертификатом.

Ставят снижение ниже строки с сертификатом

§ 3.3.1.51

Чем чреватоОба способа работают позиционно. Ниже — значит после того, как сертификат уже прочитан и отвергнут, и запуск всё равно не пройдёт.
Как заметитьСтрока есть, а узел по-прежнему не стартует с той же ошибкой.
Как правильноПоднять строку выше сертификата, к которому она относится.

Считают, что порог поднимет обновление системы

наш опыт

Чем чреватоOpenSSL идёт внутри поставки PowerMTA. Обновление библиотек операционной системы на его поведение не влияет — ни в одну, ни в другую сторону.
Как заметитьПосле обновления системы ошибки OpenSSL остались прежними.
Как правильноМенять только версию PowerMTA либо перевыпускать ключи и сертификаты.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
openssl-security-level N
Значения
целое от 0 до 5
Умолчание
1 § 3.3.1.51
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования у директивы нет: она пишется в корне файла, раздел Global, и действует на весь узел. Но действует позиционно — на строки, стоящие после неё, — и этим отличается от прочих настроек уровня узла.
⇄

Связанные директивы

3 связи

Как проверить на узле
Действующее значение — строка в конфигурации; нет строки — действует умолчание:
grep -rn 'openssl-security-level' /etc/pmta/
Значение 0 в работающей конфигурации — повод искать задачу на перевыпуск ключей. Если узел вовсе не стартует, смотреть надо не сюда, а в журнал: обе характерные ошибки OpenSSL печатаются там дословно.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Подготовить узел к отправке · Шифрование соединений