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
Изменить: добавлен жирный
3 ответа
Собираюсь ответить на мой собственный вопрос здесь. Мне не удалось получить 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
предполагая, что у вас есть готовые файлы сертификатов, отредактируйте файл /etc/postfix/main.cf :
smtpd_tls_key_file = /etc/ssl/private/YOURFILE.key
smtpd_tls_cert_file = /etc/ssl/certs/YOURFILE.crt
smtpd_tls_CAfile = /etc/ssl/certs/YOURFILE.crt
smtpd_tls_CApath = /etc/ssl/certs
(соответственно измените имя файла и путь)
Я подтверждаю, что с Let's Encrypt все в порядке, настоящий сторонний сертификат не требуется.