# Ошибка проверки SSL-сертификата: Hostname mismatch

## Симптом

В логах ПринтМенеджера или при установке появляется ошибка:

```text
[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;
* в кластерной конфигурации или филиальной сети один сертификат используется для нескольких серверов.

## Диагностика

Проверьте, для какого адреса выпущен сертификат:

```bash
openssl s_client -connect <адрес_сервера>:<порт> </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
```

Сравните результат с адресом, по которому компонент обращается к серверу.

Если Мониторинг и ПринтМенеджер установлены на разных серверах:

```bash
grep MONITORING_ADDRESS /opt/printmanager/.env
```

Если Мониторинг и ПринтМенеджер установлены на одном сервере — проверьте значение **EXT_HOSTNAME** в панели администратора ПринтМенеджера.

## Решение

### Автоматические сертификаты

Переустановка без SSL-параметров пересоздаёт сертификаты автоматически под текущий адрес:

```bash
# М
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 должны содержать адрес, по которому компонент обращается к серверу. Затем обновить с новыми файлами:

```bash
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).

## Связанные страницы

- [Требования к сертификатам безопасности](https://wiki.printum.io/books/3-ustanovka/page/trebovaniia-k-sertifikatam-bezopasnosti)
- [Как обновить Printum](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/kak-obnovit-printum)