SSL — Hostname mismatch после обновления
title: SSL — Hostname mismatch после обновления slug: ts-ssl-hostname-mismatch-pri-obnovlenii tags: [ssl, certificate, hostname mismatch, обновление, сертификат] domain: Troubleshooting type: Troubleshooting audience: partner-engineer product_versions: "4.x" status: ready related_components: [Мониторинг, ПринтМенеджер, Балансировщик] related_pages:
- kak-obnovit-printum
SSL — Hostname mismatch после обновления
Симптомы
В логах ПМПринтМенеджер после обновления:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Hostname mismatch, certificate is not valid for '<hostname>'
Синхронизация М–ПММониторинг–ПринтМенеджер не работает. CUPS не создаёт принтеры.
Причина
Сертификат выпущен для одного адреса (hostname или IP), а обращение после обновления идёт по другому. Типичные ситуации:
- М обновлён с новым hostname, сертификат остался от старого.
- При установке использовался IP, а после обновления — hostname (или наоборот).
- Собственный сертификат не включает нужный Subject Alternative Name.
Диагностика
Проверить, для какого адреса выпущен сертификат М:
openssl s_client -connect <адрес_М>:8001 </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
Сравнить с адресом, по которому ПМПринтМенеджер обращается к М:
grep MONITORING_ADDRESS /opt/printmanager/.env
Если адреса не совпадают — причина найдена.
Решение
Автоматические сертификаты
Обновление без SSL-параметров пересоздаст сертификаты автоматически:
# Для М
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | sudo -E bash
# Для ПМ
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | sudo -E bash
Собственные сертификаты
Выпустить новый сертификат для актуального hostname/IP, затем обновить с указанием новых файлов:
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | \
sudo -E SSL_CERT=/path/cert.crt \
SSL_KEY=/path/cert.key \
SSL_CERT_CA=/path/ca.crt bash -s agent
Self-signed certificate in certificate chain
Если в логах:
certificate verify failed: self signed certificate in certificate chain
Причина: в SSL-сертификат включён корневой сертификат. Использовать сертификат, содержащий только SSL-сертификат и (при необходимости) промежуточный. Корневой сертификат — отдельным файлом в SSL_CERT_CA.
Как проверить результат
cd /opt/printmanager
sudo docker-compose logs printmanager-celery-print-queue --tail=50 | grep -i ssl
Ошибок SSL не должно быть. Синхронизация М–ПММониторинг–ПринтМенеджер завершается успешно.
Когда эскалировать
- После перевыпуска сертификата ошибка сохраняется.
- Нет возможности выпустить сертификат для нужного hostname.
- Инфраструктура PKI управляется заказчиком и требует его участия.