Skip to main content

SSL — Hostname mismatch, certificate is not valid for '...'

Симптомы

В логах ПринтМенеджер или при установке:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Hostname mismatch, certificate is not valid for '<адрес>'

Синхронизация Мониторинг–ПринтМенеджер не работает. CUPS не создаёт принтеры. Встроенное приложение не подключается к серверу.


Причина

Адрес, по которому компонент обращается к серверу, не совпадает с CN или Subject Alternative Name (SAN) сертификата.

Типичные ситуации:

    Система установлена по hostname, а сертификат выпущен на IP (или наоборот). После обновления изменился адрес сервера, сертификат остался старый. При установке с балансировщиком каждому серверу нужен собственный сертификат — использовался один общий.

    Диагностика

    Проверить, для какого адреса выпущен сертификат:

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

    Сравнить с адресом, по которому идёт обращение:
    Если Мониторинг и ПринтМенеджер установлены на разных серверах:

    # Для ПМ — адрес М в .env
    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
    

    Балансировщик и филиальная сеть

    При установке схемы с балансировщиком или филиальной сетью у каждого сервера должен быть собственный ssl-сертификат, выпущенный для его адреса и единый корневой ca-сертификат. Один сертификат на все серверы не подходит.


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

    sudo docker logs printmanager-celery-print-queue --tail=50 | grep -i ssl
    

    Ошибок SSL нет. Синхронизация Мониторинг–ПринтМенеджер завершается успешно.


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

      После перевыпуска сертификата ошибка сохраняется. PKI управляется заказчиком — требуется его участие. Нет возможности выпустить сертификат для нужного hostname/IP.

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

        Требования к сертификатам безопасности Как обновить Printum