Отключение набора шифров / шифров в 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-клиента (или принимающего сервера) опускать этот набор шифров / набор шифров или набор параметров?

4 ответа

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

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

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

Другой вариант в этом случае - указать, какие шифры использовать, как видно в TLS Forward Secrecy в 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.

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

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 и работает в этом сценарии.

Вы можете использовать карту транспорта 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 для этого домена.

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

Другие вопросы по тегам