# Как обновить SSL-сертификаты Printum

<!--
title: Как обновить SSL-сертификаты Printum
slug: ts-ssl-obnovlenie-sertifikatov
tags: [ssl, сертификат, обновление, истёк срок, балансировщик]
domain: Operations
type: Runbook
audience: partner-engineer
product_versions: "4.x"
status: ready
related_components: [Мониторинг, ПринтМенеджер, Балансировщик]
related_pages:
  - trebovaniya-k-ssl-sertifikatam
  - kak-obnovit-printum
--->

### Когда использовать

- Истёк срок действия сертификатов.
- Изменился hostname или IP-адрес сервера.
- Требуется заменить сертификаты по требованиям ИБ.

---

### Основные приципы
Обновление сертификатов системы производится путём запуска обновления Мониторинга и ПринтМенеджера. При обновлении требуется указать переменные, содержащие ссылки на локальные файлы сертификатов:
* SSL_CERT - переменная для хранения пути ssl-сертификата сервера. 
* SSL_KEY - переменная для хранения пути ключа к ssl-сертификату. 
* SSL_CERT_CA - переменная для хранения пути корневового сертификата.

> **Примечание** Если во время установки системы в конфигурации Singlenode использовались автоматические сертификаты, то по истечению срока действия требуется обновить их на собственные сертификаты организации.

### Singlenode: обновление сертификатов Мониторинга
**Офлайн метод:**
```bash
tar xvf printum-x.x.x.tar.gz
cd printum-x.x.x
sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt ./install.sh 
```
**Онлайн метод:**
```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
```

---

### Singlenode: обновление сертификатов ПринтМенеджер
**Офлайн метод:**
```bash
tar xvf printmanager-x.x.x.tar.gz
cd printmanager-x.x.x
sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt ./install.sh 
```
**Онлайн метод:**
```bash
sudo curl -L https://s3.printum.io/distrib/printum-printmanager/install.sh | \
  sudo -E SSL_CERT=/path/cert.crt \
       SSL_KEY=/path/cert.key \
       SSL_CERT_CA=/path/ca.crt bash
```

---

### Балансировщик: обновление собственных сертификатов через скрипт автоматической установки

В файле `config.ini` обновить пути к новым сертификатам:

```ini
[General]
SSL_CERT_CA = /path/to/new/ca.crt

[Balancer]
SSL_CERT = /path/to/balancer/cert.crt
SSL_KEY  = /path/to/balancer/cert.key

[Monitoring]
SSL_CERT = /path/to/monitoring/cert.crt
SSL_KEY  = /path/to/monitoring/cert.key

[PrintManager_1]
SSL_CERT = /path/to/pm1/cert.crt
SSL_KEY  = /path/to/pm1/cert.key

# [PrintManager_2], [PrintManager_3] — аналогично
```

Запустить скрипт:

```bash
sudo ./install_all_offline.sh
```

---

### Балансировщик: перевыпуск автоматических сертификатов для установки балансировщика вручную

Выполнять на сервере балансировщика раз в год:

```bash
# Удалить все сертификаты
sudo rm -fr /opt/printum_balancer/certificates

# Выпустить новый корневой сертификат
sudo /opt/printum_balancer/scripts/generate_ca_cert.sh

# Перевыпустить сертификаты для всех серверов
cd /opt/printum_balancer/scripts
sudo ./regenerate_all_certs.sh \
  -balancer <BALANCER_ADR> \
  -pm <PM_1> \
  -pm <PM_2> \
  -pm <PM_3>
```

Где `<BALANCER_ADR>`, `<PM_1>`, `<PM_2>`, `<PM_3>` — те же адреса, что использовались при первоначальной установке.

---

### Проверка после обновления

```bash
# Проверить срок действия нового сертификата М
openssl s_client -connect <адрес_М>:8001 </dev/null 2>/dev/null \
  | openssl x509 -noout -dates

# Проверить синхронизацию М–ПМ
cd /opt/printmanager
sudo docker-compose logs printmanager-celery-print-queue --tail=50 | grep -i ssl
```

Ошибок SSL нет. Синхронизация завершается успешно.

---

### Когда эскалировать

- Обновление сертификатов не устраняет SSL-ошибки.
- Цепочка доверия не проходит проверку.
- PKI управляется заказчиком.

---

### Связанные страницы

- [Требования к сертификатам безопасности](https://wiki.printum.io/books/3-ustanovka/page/trebovaniia-k-sertifikatam-bezopasnosti)
- [Hostname mismatch — сертификат не соответствует адресу](https://wiki.printum.io/books/7-ustranenie-neispravnostei/page/osibka-hostname-mismatch-posle-obnovleniia)
- [Как обновить Printum](https://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/kak-obnovit-printum)