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

Postfix по-прежнему жалуется, что «проверка сертификата не удалась», даже если «smtp_tls_security_level = fingerprint»

Я пытаюсь использовать Postfix (версия 2.6.6 на RHEL6) для подключения и отправки почты через почтовый ретранслятор в нашей внутренней сети. Я хочу подключиться к STARTTLS через порт 25 (порт 465 недоступен на этом сервере). Почтовый ретранслятор использует самозаверяющий сертификат SSL / TLS, поэтому мне пришлось пропустить проверку сертификата с помощью центра сертификации. Я обнаружил smtp_tls_security_level = fingerprint который не проверяет цепочку доверия, дату истечения срока действия и т. д. Вместо этого он проверяет, используя отпечаток сертификата.

Я решил, что это идеальное решение, но когда я пытаюсь отправить электронное письмо, я все равно получаю ошибки в /var/log/maillog что сказать postfix/smtp[15182]: certificate verification failed for xxxxxxxxxxxx[zz.zz.zz.zz]:25: untrusted issuer.

Я думал, что весь смысл fingerprint уровень безопасности - пропускать проверку сертификата. Я неправильно понимаю смысл этой опции? Мне нужно что-то еще настроить?

Вот соответствующие строки из main.cf:

relayhost = [xxx.xxx.xxx]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl-passwords
smtp_sasl_security_options=
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
smtp_tls_security_level = fingerprint
smtp_tls_fingerprint_digest = sha1
# fingerprint changed for ServerFault. just an example.
smtp_tls_fingerprint_cert_match = c1:d3:54:12:00:r0:ef:fa:42:48:10:ff:ac:1e:75:13:dd:ad:af:3e
smtp_tls_note_starttls_offer = yes

Изменить: добавлено жирным шрифтом

Я отвечу на свой вопрос здесь. Мне не удалось получить fingerprint проверка работает, но я обнаружил, как получить TLS без проверки сертификата. Из руководство:

Обязательное шифрование TLS можно настроить, установив smtp_tls_security_level = encrypt. Несмотря на то, что всегда используется шифрование TLS, доставка почты продолжается, даже если сертификат сервера не является доверенным или имеет неправильное имя.

Я пробовал это однажды, но, должно быть, у меня не были включены все нужные параметры. Но используя настройки выше, я просто изменил smtp_tls_security_level к encrypt и он отлично работает.

Поскольку в Postfix включен chroot (по умолчанию в Debian) "/etc/postfix/master.cf":

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      unix  -       -       -       -       -       smtp

и значение по умолчанию для переменной smtp_tls_CAfile пусто, проход решения для его установки с местоположением файла сертификатов внутри de chroot:

В "/etc/postfix/main.cf":

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt