SSL — unable to get local issuer certificate (отсутствует SAN)

Симптомы

В логах при синхронизации Мониторинг–ПринтМенеджер или подключении компонентов:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
unable to get local issuer certificate

Причина

В SSL-сертификате сервера отсутствует поле Subject Alternative Name (SAN). Современные клиенты (Python 3.7+, браузеры) требуют наличия SAN — поле CN (Common Name) уже недостаточно.


Диагностика

Проверить, есть ли SAN в сертификате сервера:

openssl x509 -in /path/to/server.crt -noout -ext subjectAltName

Норма: вывод содержит DNS: или IP: записи. Ошибка: пустой вывод или No extensions in certificate — SAN отсутствует.


Решение

Перевыпустить сертификат с полем SAN. В SAN указать все адреса сервера:

DNS:server.example.com
DNS:server
IP:10.0.0.1

После перевыпуска переустановить с новым сертификатом:

sudo curl -L https://s3.printum.io/box/monitoring/install.sh | \
  sudo -E SSL_CERT=/path/server.crt \
       SSL_KEY=/path/server.key \
       SSL_CERT_CA=/path/ca.crt bash -s agent

Как проверить результат

openssl s_client -connect <адрес>:<порт> </dev/null 2>/dev/null \
  | openssl x509 -noout -ext subjectAltName

Вывод содержит SAN с актуальными адресами сервера. Синхронизация завершается без ошибок.


Когда эскалировать


Связанные страницы


Revision #11
Created 2026-05-18 10:00:18 UTC by DD
Updated 2026-05-26 15:11:18 UTC by Александр Чжень