Отключение набора шифров / шифров в 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 для этого домена.
Спасибо всем авторам, которые привели меня к правильному способу выяснить это;-)