SystemdDoctor
служба не работает сертификаты сеть

certificate verify failed в журнале службы

Сообщения о неудачной проверке сертификата означают, что служба не доверяет собеседнику. Причины делятся на четыре: срок истёк, цепочка неполная, имя не совпадает, или в системе нет нужных корневых сертификатов.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Срок сертификата истёк

    Автообновление не сработало, и никто этого не заметил. Самая частая причина внезапных отказов «работавшего» соединения.

  2. Неполная цепочка сертификатов

    Сервер отдаёт только свой сертификат без промежуточных. Браузеры иногда достраивают цепочку сами, а библиотеки в службах — нет.

  3. Имя в сертификате не совпадает с адресом

    Обращение по IP или по другому имени: сертификат выдан на конкретные имена.

  4. В системе нет доверенных корневых сертификатов

    В минимальных образах и контейнерах пакет корневых сертификатов часто отсутствует. Тогда не доверяется ничего.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Полная картина: цепочка, имена, срок, результат проверки.

echo | openssl s_client -connect узел:443 -servername узел 2>&1 | head -25

Точная формулировка от библиотеки службы.

journalctl -u myapp.service -n 30 --no-pager | grep -iE "certificate|x509|tls"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Срок сертификата истёк
Почему происходит
Автообновление не сработало, и никто этого не заметил. Самая частая причина внезапных отказов «работавшего» соединения.
Как проверить
Посмотрите срок сертификата на той стороне.
echo | openssl s_client -connect узел:443 -servername узел 2>/dev/null | openssl x509 -noout -subject -enddate
Как исправить
Обновите сертификат и проверьте, почему обновление не прошло: у certbot для этого есть проверочный прогон.
2. Неполная цепочка сертификатов
Почему происходит
Сервер отдаёт только свой сертификат без промежуточных. Браузеры иногда достраивают цепочку сами, а библиотеки в службах — нет.
Как проверить
Посмотрите, сколько сертификатов отдаёт сервер.
echo | openssl s_client -connect узел:443 -servername узел 2>/dev/null | grep -c "BEGIN CERTIFICATE"
Как исправить
Настройте сервер отдавать полную цепочку. Для Let’s Encrypt это файл fullchain, а не cert.
3. Имя в сертификате не совпадает с адресом
Почему происходит
Обращение по IP или по другому имени: сертификат выдан на конкретные имена.
Как проверить
Посмотрите имена в сертификате.
echo | openssl s_client -connect узел:443 -servername узел 2>/dev/null | openssl x509 -noout -ext subjectAltName
Как исправить
Обращайтесь по имени из сертификата или выпустите сертификат на нужное имя.
4. В системе нет доверенных корневых сертификатов
Почему происходит
В минимальных образах и контейнерах пакет корневых сертификатов часто отсутствует. Тогда не доверяется ничего.
Как проверить
Проверьте наличие хранилища.
ls -l /etc/ssl/certs/ca-certificates.crt 2>/dev/null || ls -l /etc/pki/tls/certs/ca-bundle.crt 2>/dev/null
Как исправить
Установите пакет корневых сертификатов и обновите хранилище.
sudo apt-get install -y ca-certificates && sudo update-ca-certificates

Пример вывода

Служба не доверяет собеседнику: нет корневых сертификатов. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

myapp[4400]: error: Get "https://api.example.org/v1": x509: certificate signed by unknown authority
myapp[4400]: fatal: cannot initialise client
systemd[1]: myapp.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация OpenSSL: s_client документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено в контейнере без пакета корневых сертификатов.
    собственная проверка, systemd 255
    сверено 15 сентября 2026