Ошибка в postfix - certificate verification failed

Столкнулся с небольшой ошибкой в логе postfix, которая не влияет непосредственно на работоспособность почтовой системы, но тем не менее, надо было ее исправить. Она связана с тем, что postfix не знает обо всех актуальных CA сертификатах и не всегда может проверить валидность сертификата при общении с другими серверами.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Сама ошибка выглядит следующим образом:

Oct 30 21:00:50 postfix/smtp[25602]: certificate verification failed for gmail-smtp-in.l.google.com[64.233.162.26]:25: untrusted issuer /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign

В принципе, по тексту все понятно и без пояснений. Postfix не может проверить издателя (issuer) сертификата. Сервер очень старый, обновлений CA на нем давно не было и они уже не выходят. Решил просто руками обновить список CA сертификатов.

Для начала проверим, задан ли вообще в конфиге postfix параметр smtp_tls_CAfile. Для этого просто откройте файл main.cf и проверьте там. Если ничего нет, значит стоит дефолтное значение. Какое оно, можно проверить командой postconf.

# postconf | grep smtp_tls_CAfile

Если параметр не задан, то зададим его сами. Если же указан какой-то конкретный файл, то надо работать с ним.

Сначала просто качаем свежий файл с CA сертификатами. Я не знаю, где брать самый актуальный и полный. Гугл почти везде меня привел к ссылке https://curl.haxx.se/ca/cacert.pem. Оттуда и возьмем. В системах, где я обновлял файл, старый находился по адресу /etc/pki/tls/certs/ca-bundle.crt, поэтому сначала сделаем его бэкап, а потом заменим новым.

# cp /etc/pki/tls/certs/ca-bundle.crt /root/ca-bundle.crt-old
# curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

или

# wget -O --no-check-certificate /etc/pki/tls/certs/ca-bundle.crt https://curl.haxx.se/ca/cacert.pem

Дальше укажем на этот файл в конфиге postfix - main.cf. Для этого добавляем туда:

smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

После этого надо перезапустить postfix. Я проделал это на нескольких серверах. Ошибка исчезла, кроме одного домена - mx.yandex.ru. Для него по-прежнему не получалось проверить подлинность сертификата:

Oct 30 19:46:37 postfix/smtp[11671]: certificate verification failed for mx.yandex.ru[213.180.204.89]:25: untrusted issuer /C=PL/O=Unizeto Sp. z o.o./CN=Certum CA

Я проверил файл ca-bundle.crt, там действительно не было информации об издателе Certum CA. Не придумал ничего лучше, кроме как добавить его туда вручную. Для этого скачал CA.pem с сайта издателя - https://www.certum.pl/CA.pem и добавил его содержимое в самый конец ca-bundle.crt.

То есть просто дабвил вот это в конец файла ca-bundle.crt, по аналогии с остальными записями:

Certum Certification Authority
===============================
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM
MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD
QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM
MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD
QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E
jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo
ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI
ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu
Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg
AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7
HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA
uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa
TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg
xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q
CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x
O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs
6GAqm4VKQPNriiTsBhYscw==
-----END CERTIFICATE-----

Подозреваю, что где-то есть более полный файл с мировыми CA root. Если кто-то знает, где его лучше брать, прошу поделиться в комментариях.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

2 комментария

  1. Если у вас Красная-шапка(CentOS), то обновляйте через менеджер пакетов
    yum update ca-certificates
    В других системах так же, через свой менеджер пакетов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar