Установка сертификата SSL Letsencrypt на iRedMail
Предисловие 1:
Установка сертификата letsencrypt будет производится на уже установленный iRedMail.
Из этой информации мы будем знать и иметь в виду:
во-первых, iRedMail сам генерирует самоподписанный сертификат;
во-вторых, 80 порт будет занят nginx'ом.
Из первого пункта мы можем узнать путь до текущего сертификата ;)
А из-за второго пункта мы будем генерировать сертификат в -standalone режиме. Иначе certbot будет ругаться что 80 порт занят и надо его освободить.
Предисловие 2:
Предполагается что все необходимые манипуляции с доменами уже произведены:
- подключение доменов и поддоменов и их делегирование у регистратора уже произведено
- прописаны все необходимые А и/или АААА-записи.
Итак
1. Настраиваем NGINX на использованием сертификата
Добавляем в секцию server , в файле /etc/nginx/sites-enabled/00-default-ssl.conf следующий блок(то что надо добавить - выделено подчеркиванием):
server {
...
root /var/www/html;
index index.php index.html;
location ~ /.well-known {
root /usr/share/nginx/html;
allow all;
}
include ...
...
}
Перечитываем конфиг nginx:
systemctl reload nginx
2. Генерируем сертификаты Letsencrypt
Устанавливаем утилиту certbot:
apt install certbot
Для нашего удобства, создаем переменную с нашим хостом, для которого мы будем получать сертификат:
данная команда в качестве значения задаст имя нашего сервера, поэтому hostname должен быть правильно указан!
DOMAIN=$(hostname)
И получаем сертификат командой:
sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d mail.freeserver.su
При успешном завершении команды, мы получим сообщение на подобие:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.freeserver.su/fullchain.pem
Key is saved at: /etc/letsencrypt/live/mail.freeserver.su/privkey.pem
3. Заменяем самоподписанные сертификаты iRedMail на наши от Letsencrypt
Удаляем старые сертификаты:
rm -f /etc/ssl/private/iRedMail.key
rm -f /etc/ssl/certs/iRedMail.crt
И создаем симлинки на полученные:
sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/ssl/certs/iRedMail.crt
sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/ssl/private/iRedMail.key
cert.pem и iRedMail.crt — открытые ключи (public);
$DOMAIN — переменная, которая содержит наш домен.
Перезапускаем службы nginx, postfix и dovecot:
sudo systemctl reload nginx postfix dovecot
4. Автоматического продления сертификата
Создаем в cron задачу:
crontab -e
Добавляем:
0 0 * * 1,4 /usr/bin/certbot renew --noninteractive
После автоматического продления, добавим настройку для перезапуска сервисов;
в файл /etc/letsencrypt/cli.ini добавить:
deploy-hook = systemctl reload nginx postfix dovecot
Более подробную информацию можно прочитать:
про letsencrypt в общем:
про letsencrypt для iRedMail