SSL — Hostname mismatch после обновления
Симптомы
В логах ПринтМенеджер после обновления:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for '<hostname>'
Синхронизация Мониторинг–ПринтМенеджер не работает.
Причина
Сертификат выпущен для одного адреса (hostname или IP), а обращение после обновления идёт по другому. Типичные ситуации:
- Во время обновления указали переменную MON_HOSTNAME, в которой допустили ошибку или указали посторонний адрес.
- При установке использовался IP, а после обновления — hostname (или наоборот).
- Собственный сертификат не включает нужный Subject Alternative Name.
Диагностика
Проверить, для какого адреса выпущен сертификат М:
openssl s_client -connect <адрес_М>:8001 </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
Сравнить с адресом, по которому ПринтМенеджер обращается к М:
sudo grep MONITORING_ADDRESS /opt/printmanager/.env
Если адреса не совпадают — причина найдена.
Решение
Автоматические сертификаты
В случае использования автоматических сертификатов при установке - обновление без SSL-параметров пересоздаст сертификаты автоматически:
# Для М:
sudo curl -L https://s3.printum.io/box/monitoring/install.sh | sudo -E bash
# или для офлайн метода:
sudo -E ./install.sh
# Для ПМ:
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | sudo -E bash
# или для офлайн метода:
sudo -E ./install.sh
Собственные сертификаты
Выпустить новый сертификат для актуального 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 -f --tail=5
Ошибок SSL не должно быть. Синхронизация Мониторинг–ПринтМенеджер завершается успешно.
Когда эскалировать
- После перевыпуска сертификата ошибка сохраняется.
- Нет возможности выпустить сертификат для нужного hostname.
- Инфраструктура PKI управляется заказчиком и требует его участия.