SSL — unable to get local issuer certificate (отсутствует SAN)
title: SSL — unable to get local issuer certificate (отсутствует SAN) slug: ts-ssl-unable-to-get-local-issuer tags: [ssl, unable to get local issuer, SAN, subject alternative name, сертификат] domain: Troubleshooting type: Troubleshooting audience: partner-engineer product_versions: "4.x" status: ready related_components: [Мониторинг, ПринтМенеджер] related_pages:
- trebovaniya-k-ssl-sertifikatam
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
Если нет возможности перевыпустить сертификат — перейти на автоматические сертификаты (установка без SSL-параметров). Автоматические сертификаты содержат SAN и не вызывают этой ошибки.
Как проверить результат
openssl s_client -connect <адрес>:<порт> </dev/null 2>/dev/null \
| openssl x509 -noout -ext subjectAltName
Вывод содержит SAN с актуальными адресами сервера. Синхронизация завершается без ошибок.
Когда эскалировать
- PKI управляется заказчиком — перевыпуск сертификата требует его участия.
- После перевыпуска с SAN ошибка сохраняется.