Назад | Перейти на главную страницу

Отключение набора шифров / шифров в postfix / TLS для определенного получателя

Мы используем Postfix 2.9.4 и OpenSSL 0.9.8j-fips 07 января 2009 г. (SLES11 SP4).

Мы получаем это сообщение об ошибке при отправке почты определенному получателю:

error:1408D13A:SSL routines:SSL3_GET_KEY_EXCHANGE:unable to find ecdh parameters:s3_clnt.c:1336

Читая код в s3_clnt.c для нашей версии OpenSSL, он говорит в комментарии

На данный момент мы поддерживаем только именованные (не общие) кривые, а параметры ECParameters в этом случае составляют всего три байта.

При анализе кода это либо не именованный тип кривой, либо параметр вне допустимого диапазона.

Мой вопрос: как научить наш SMTP-клиент (или принимающий сервер) пропускать этот набор шифров / шифров или набор параметров?

Решение для определения конкретного списка шифров только для одного получателя:

master.cf: smtp2 unix - - n - - smtp -o tls_high_cipherlist=!ECDH:...(some more)

transport_map: <domain> smtp2:<domain> (второй домен опускается?)

tls_policy_map: <domain> verify match=hostname ciphers=high

Это опускает проблемные алгоритмы ECDH, которые работали в этом сценарии.

Политика TLS для домена

Вы можете использовать Карта политик Postfix TLS для создания списка доменов и того, какие политики TLS к ним применяются.

Вы также можете изменить свой глобальный smtp и smtpd параметры в постфиксе, чтобы ограничить, какие шифры могут или должны использоваться.

Другой вариант в этом случае - указать, какие шифры использовать, как показано в Прямая секретность TLS в Postfix и perhaqps просто используйте strong.

    smtpd_tls_eecdh_grade = strong | ultra

Вот пример /etc/postfix/tls_policy

.google.com     secure match=.google.com:.gmail.com protocols=TLSv1 ciphers=high
.paypal.com     secure match=.paypal.com protocols=TLSv1 ciphers=high
.example.tld    ciphers=medium
.blizzard.com   may

Затем создайте карту с помощью:

postmap tls_policy

В /etc/postfix/main.cf вам понадобится:

smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

В /etc/postfix/main.cf вы можете попробовать исключить шифры с помощью smtpd_tls_exclude_ciphers и smtpd_tls_mandatory_exclude_ciphers и / или установить smtpd_tls_eecdh_grade = strong

Если настройка исключений шифров или установка tls_policy не помогает, вы можете рассмотреть возможность обновления openssl и postfix.

Вы можете использовать Postfix транспортная карта для маршрутизации почты в определенные пункты назначения через другую службу, определенную в master.cf. Там вы сможете использовать обычные параметры конфигурации постфикса для TLS для включения / отключения шифров.

Более простой способ решить эту проблему (вместо введения новой записи master.cf для smtp) - использовать карту tls_policy и установить

tls_policy:  <domain>    verify hostname=<hostname> exclude=kECDH

Вот и все.

Если у вас нет tls_policy (в более старой версии postfix), вы можете использовать параметр

-o smtp_tls_mandatory_exclude_ciphers=kECDH

в записи master.cf для этого домена.

Спасибо всем участникам, которые помогли мне это выяснить ;-)