Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Как защитить почтовый сервер ISPConfig 3 с помощью сертификата Let’s Encrypt

Как защитить почтовый сервер ISPConfig 3 с помощью сертификата Let’s Encrypt

Самостоятельная настройка собственного почтового сервера неизбежно требует обеспечения безопасного подключения по протоколам SSL и TLS, для чего необходим действующий и доверенный сертификат. В данном руководстве подробно рассматривается процесс развертывания Let’s Encrypt сертификата для почтовой службы с организацией его дальнейшего автоматического обновления.

Предупреждение: эта инструкция создана на основе материалов профильного ресурса HowToForge, однако в нее были внесены изменения, позволяющие использовать раздельные сертификаты для почтового сервера и панели управления. Если ранее вы уже настраивали систему по оригинальному руководству, текущий метод может нарушить существующую конфигурацию. Кроме того, в описанном процессе задействованы сертификаты, выпускаемые утилитой acme.sh. Пользователям утилиты certbot рекомендуется обратиться к альтернативной документации разработчиков.

Примечание для пользователей ISPConfig версии 3.2: эта версия панели способна автоматически генерировать валидный SSL-сертификат Let’s Encrypt для основного доменного имени сервера прямо в процессе установки, и этот же сертификат в дальнейшем применяется для нужд почтовой службы. Ручное создание сертификата, описываемое далее, на системах с ISPConfig 3.2 не требуется, если только вам не нужно задействовать в защищенном соединении дополнительные доменные имена помимо основного хостинга.

Prerequisites

Перед тем как приступить к работе, убедитесь, что ваш сервер развернут и сконфигурирован в строгом соответствии с официальным руководством «Perfect Server» для используемой вами операционной системы. Также критически важно выполнять все последующие действия с правами корневого суперпользователя (root).

Getting started

В качестве практического примера для почтового сервера задействованы следующие доменные имена: mail.example.com, smtp.example.com и imap.example.com. При выполнении команд и настройке заменяйте все подобные значения на ваши реальные доменные имена. Первым шагом создайте соответствующие DNS-записи для ваших хостов, чтобы они указывали на IP-адрес вашего сервера (для этого понадобятся стандартные A-записи, а при необходимости и AAAA-записи). После этого перейдите в интерфейс панели управления ISPConfig во вкладку «Sites».

Issuing the certificate

Находясь в разделе «Sites», нажмите на кнопку добавления нового веб-сайта («Add new website»). Укажите основной домен mail.example.com в качестве имени сайта. Обязательно отключите опцию автоматического поддомена (Auto-Subdomain) и установите галочку в поле «Let’s Encrypt».

После завершения этого шага вы можете добавить остальные доменные имена в качестве алиасов. Перейдите в список алиас-доменов и нажмите «Add new aliasdomain». Выберите smtp.example.com в качестве доменного имени, а в качестве родительского сайта укажите mail.example.com. Отключите автоматическое создание поддоменов и сохраните новую запись. Повторите аналогичную процедуру для остальных запланированных хостингов.

Скриншот проверки SSL-сертификата в онлайн-сервисе
Пример успешной проверки созданных DNS-записей и SSL-сертификата почтового домена

Убедитесь, что сертификат успешно выпущен и корректно установлен в системе. Для проверки можно воспользоваться специализированными внешними инструментами, такими как онлайн-сканер SSL-сертификатов SSL Shopper. Если проверяемые доменные имена отображаются корректно и сервис не фиксирует никаких ошибок, можно переходить к следующему этапу. При наличии проблем изучите сообщения об ошибках и устраните их до продолжения работ.

Replacing the certificate with the Let’s Encrypt certificate

Теперь можно заменить действующий сертификат на только что полученный доверенный аналог от Let’s Encrypt. Авторизуйтесь в терминале вашего сервера и последовательно выполните следующие команды (предварительно заменив mail.example.com на домен, который вы использовали для настройки веб-сайта):

cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.crt smtpd.cert
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key smtpd.key
systemctl restart postfix
systemctl restart dovecot

Службы Postfix и Dovecot теперь должны использовать новый сертификат. Однако на этом процесс настройки не завершается. Поскольку сертификаты Let’s Encrypt выпускаются сроком на 60 дней, необходимо автоматизировать процедуру их обновления и замены, чтобы исключить человеческий фактор.

Multiserver nodes without ISPConfig GUI

Если текущий сервер представляет собой отдельный узел без графического интерфейса в рамках многосерверной архитектуры ISPConfig (multiserver), вам необходимо проверить, есть ли у самой панели управления ISPConfig собственный SSL-сертификат. Не выполняйте этот шаг, если у вас установлен одиночный сервер или узел, на котором работает графический интерфейс ISPConfig.

Вы можете проверить наличие файлов с помощью следующих команд:

cd /usr/local/ispconfig/interface/ssl/
ls ispserver.crt
ls ispserver.key

В случае успешного обнаружения система выведет имена файлов. Если же проверка не выявила файлов ispserver.crt и ispserver.key, их необходимо создать вручную в виде символических ссылок на файлы сертификата Let’s Encrypt следующим образом:

ln -s /var/www/mail.example.com/ssl/mail.example.com-le.cer ispserver.crt
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key ispserver.key

Set up an automatic renewal script

Для автоматизации обновления создайте новый файл сценария с помощью текстового редактора: nano /usr/local/bin/le_mailserver_restart.sh и добавьте в него следующий программный код:

#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecot

Сделайте созданный файл исполняемым, выполнив команду: chmod +x /usr/local/bin/le_mailserver_restart.sh.

Для автоматического запуска этого скрипта при обновлении сертификата задействуется служба systemd. Создайте и откройте новый файл службы: nano /etc/systemd/system/le-mailserver-restart.service, после чего вставьте в него следующие конфигурационные строки:

[Unit]
Description="Run script to restart Postfix and Dovecot after the certificate has been renewed"
[Service]
ExecStart=/usr/local/bin/le_mailserver_restart.sh

Сохраните и закройте этот файл. Затем создайте файл отслеживания путей systemd: nano /etc/systemd/system/le-mailserver-restart.path. Внесите в него конфигурацию, не забыв заменить mail.example.com на используемое вами доменное имя:

[Unit]
Description="Monitor the mailserver certificate files to trigger a e-mail services restart after the certificates has been renewed"
[Path]
PathModified=/var/www/mail.example.com/ssl/
Unit=le-mailserver-restart.service
[Install]
WantedBy=multi-user.target

Сохраните файл, закройте его и активируйте созданную службу для автоматического запуска при старте системы:

systemctl start le-mailserver-restart.path
systemctl enable le-mailserver-restart.path

На этом основная настройка завершена.

Not working?

В ходе практики может возникнуть ситуация, когда сертификат работает некорректно из-за того, что Центр сертификации Let’s Encrypt назначил один из алиас-доменов в качестве основного (Common name). Вычислить главный домен можно с помощью упорядоченного ранее SSL-инструмента или путем просмотра содержимого директории /root/acme.sh/, где хранятся папки доменов и их алиасов. Если проблемы в работе почтовых служб и сертификатов устранить не удается, рекомендуется описать возникшую ситуацию на профильном форуме сообщества для получения экспертной помощи.

Источник: howtoforge.com

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

01.
На платформе MonsterInsights