SSL в Proxmox Mail Gateway используется как для шифрования почтового трафика, так и для доступа к WEB консоли администратора. Из коробки доступен самоподписанный сертификат, но в корпоративной среде лучше использовать либо подписанный доменным центром сертификации либо, что лучше, коммерческий.
В общем случае установка сертификата сводится к тому, чтобы скопировать все части сертификата (ключ, сертификат, промежуточный и корневой сертификаты) в один файл и положить его в /etc/pmg/pmg-api.pem
Процедура установки сертификата
Вот что написано в официальной документации по данному вопросу.
Выпустить сертификат командой:
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
Далее необходимо подписать запрос и получить сертификат. Сделать это можно как подписав его непосредственно средствами openssl получив самоподписанный сертификат, либо отправив запрос в доменный центр сертификации либо в коммерческий центр сертификации.
Как получить сертификат в доменном центре сертификации я рассказывал в статье SSL сертификат в Linux.
Когда вы загрузите полученный сертификат на сервер то необходимо объединить все части SSL сертификата в один файл.
-----BEGIN RSA PRIVATE KEY----- (ваш приватный ключ (domain.key) -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- (Сертификат вашего домена: domain.crt) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Промежуточный сертификат коммерческого центра сертификации: commercial_ca.crt) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Корневой сертификат центра сертификации: root_ca.crt) -----END CERTIFICATE-----
Сделать это можно командой:
cat domain.key cert.cer >/etc/pmg/pmg-api.pem
В моем случае я подписывал сертификат доменным центром сертификации. Для получения рабочей конфигурации мне хватило только ключа и подписанного сертификата сервера. Затем необходимо перезапустить сервис pmgproxy
systemctl restart pmgproxy
Установка сертификата Let’s Encrypt
С версии 6.4-3 в Proxmox Mail Gateway появилась возможность использования сертификатов Let’s Encrypt. Функция доступна прямо в веб-интерфейсе панели управления.
Далее на вкладке ACME Accounts необходимо добавить аккаунт.
Следующим шагом заполняем простую форму, принимаем соглашение и жмем Register.
Следующим шагом идем на вкладку Certificates.
Для выпуска сертификата вам необходимо указать доменное имя вашего сервера и протоколы к которым он будет привязан. API — это веб интерфейс и доступ к управлению PMG с помощью скриптов через API, SMTP — соответственно для SMTP протокола.
Важный нюанс. Для получения Let’s encrypt сертификата вам необходимо подтвердить право владения доменом. Сделать это можно двумя способами по HTTP или с помощью DNS.
Первый вариант самый простой, вам просто нужно открыть 80-й порт на шлюзе Proxmox Mail Gateway и межсетевом экране, чтобы сервера ACME могли проверить доступность вашего домена по http. Во втором случае предварительно необходимо настроить плагин для проверки с помощью DNS. Добавляется он на вкладке ACME Accounts.
Как видно из формы существует много API с, помощью которых можно подтверждать домены. Для каждого из них необходима регистрация в соответствующем сервисе и получение необходимых данных для настройки плагина. А именно логина, пароля, секретного кода api и т.д. Мне показался данный способ достаточно замороченным и я настраивал подтверждение обычным HTTP. Не смотря на кажущуюся проблему в безопасности нужно заметить, что 80-й порт открывается только в момент проверки домена и все остальное время ничего на этом порту не висит.
Последним шагом выпускаем сертификаты кнопкой Order Certificate Now.
Далее сертификаты будут выпускаться автоматически, но лучше настроить мониторинг сертификатов например в Zabbix.
Дополнительные материалы
- Ссылка на страницу документации: https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html#_ssl_certificate
- Установка и настройка PMG для работы с Microsoft Exchange
Если есть что добавить прошу в комментарии.
Спасибо большое! Статья помогла, а то загрузил не тот серт и сломал весь веб)