Ошибка проверки SSL-сертификата: Hostname mismatch
Симптом
В логах ПринтМенеджера или при установке появляется ошибка:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Hostname mismatch, certificate is not valid for '<адрес>'
Возможные проявления:
- не работает синхронизация Мониторинга и ПринтМенеджера;
- CUPS не создаёт принтеры;
- встроенное приложение не подключается к серверу.
Причина
Компонент обращается к серверу по адресу, который отсутствует в сертификате (CN или Subject Alternative Name).
Типичные ситуации:
- система была установлена по hostname, а сертификат выпущен для IP-адреса (или наоборот);
- после обновления изменился адрес сервера, а сертификат не был перевыпущен;
- в переменной
MON_HOSTNAMEилиMONITORING_ADDRESSуказан неверный адрес; - при использовании собственных сертификатов отсутствует необходимый CN или SAN;
- в кластерной конфигурации или филиальной сети один сертификат используется для нескольких серверов.
Диагностика
Проверьте, для какого адреса выпущен сертификат:
openssl s_client -connect <адрес_сервера>:<порт> </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
Сравните результат с адресом, по которому компонент обращается к серверу.
Если Мониторинг и ПринтМенеджер установлены на разных серверах:
grep MONITORING_ADDRESS /opt/printmanager/.env
Если Мониторинг и ПринтМенеджер установлены на одном сервере — проверьте значение EXT_HOSTNAME в панели администратора ПринтМенеджера.
Решение
Автоматические сертификаты
Переустановка без 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
Собственные сертификаты
Перевыпустить сертификат для актуального адреса сервера. CN и SAN должны содержать адрес, по которому компонент обращается к серверу. Затем обновить с новыми файлами:
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
Кластер и филиальная сеть
Каждый сервер должен использовать собственный сертификат. Все сертификаты должны быть выпущены одним удостоверяющим центром (CA).
См. также
Ключевые слова
Hostname mismatch, certificate is not valid for, certificate verify failed, SSL, SAN, CN, MONITORING_ADDRESS, EXT_HOSTNAME, сертификат, hostname, обновление