Let's Encrypt — это бесплатный, автоматизированный и открытый центр сертификации. Этот CA выдает стандартные сертификаты для проверки домена. Сертификаты можно использовать для веб-серверов, почтовых серверов, FTP-серверов и многих других целей. Шифрование электронной почты и подпись кода требуют другого типа сертификатов, которые Let's Encrypt не выдает.
Ниже несколько ссылок, которые стоит прочитать:
Документация тут:
Важно: что нужно знать о проблемах проверки TLS-SNI
Про Let's Encrypt и записи DNS CAA читайте здесь:
Если вас не интересует CAA, ничего делать не надо, но если возникнут ошибки — смотрите раздел про ошибки CAA в документе выше.
Если хотите использовать записи CAA, воспользуйтесь генератором CAA:
Proxmox Mail Gateway использует ключи и сертификаты для установления защищенных соединений. Приложение использует ключи и сертификаты, хранящиеся здесь:
/etc/pmg/pmg-api.pem — ключ и сертификат (вместе) для HTTPS-сервера (API)
/etc/pmg/pmg-tls.pem — ключ и сертификат (вместе) для шифрования почтового трафика (TLS)
Учтите, что само приложение может перезаписывать некоторые файлы ключей и сертификатов, например, если вы отключаете и включаете TLS в настройках почтового прокси.
Для замены TLS-сертификатов мы запрашиваем их у CA Let's Encrypt с помощью приложения certbot.
Требования:
- Открыт входящий HTTP-трафик (порт 80).
- Корректно настроено имя хоста.
- В конфигурации PMG Mail Proxy включены TLS и логирование TLS.
Установка
Рекомендуется использовать certbot из репозитория stretch-backports. Для этого добавьте репозиторий в /etc/apt/sources.list:
# vi /etc/apt/sources.list
Добавьте строку:
deb stretch-backports main
После сохранения выполните:
# apt-get update
Чтобы установить certbot, выполните:
# apt-get install certbot -t stretch-backports
Перед запросом сертификата создайте скрипт post-hook в каталоге /root:
# cd /root
# vi certbot-post-hook.sh
Код скрипта:
#!/bin/bash
# post-hook, смотрите renewalparams в /etc/letsencrypt/renewal/$(hostname -f).conf
# замена почтового сертификата
cat /etc/letsencrypt/live/$(hostname -f)/fullchain.pem /etc/letsencrypt/live/$(hostname -f)/privkey.pem >/etc/pmg/pmg-tls.pem
chown root:root /etc/pmg/pmg-tls.pem
chmod 600 /etc/pmg/pmg-tls.pem
# замена http сертификата
cat /etc/letsencrypt/live/$(hostname -f)/fullchain.pem /etc/letsencrypt/live/$(hostname -f)/privkey.pem >/etc/pmg/pmg-api.pem
chown root:www-data /etc/pmg/pmg-api.pem
chmod 640 /etc/pmg/pmg-api.pem
systemctl restart pmgproxy
Дайте скрипту права на выполнение:
# chmod 700 certbot-post-hook.sh
Теперь можно запросить сертификат:
# certbot certonly --authenticator standalone --preferred-challenges http --post-hook "/root/certbot-post-hook.sh" -d $(hostname -f)
Введите ваш email, согласитесь с условиями использования и ответьте, хотите ли вы делиться своим email.
Поздравляем, вы запросили и установили (через post-hook) сертификат Let's Encrypt.
Автоматическое обновление
Пакет Debian поставляется с cron-заданием и таймером systemd. cron-задание не будет запускать renew, если обнаружит systemd (/run/systemd/system). Всё происходит через certbot.timer.
Чтобы обновление проходило автоматически, убедитесь, что certbot.timer включен и запущен. Параметры Post-Hook и Preferred Challenges сохраняются в /etc/letsencrypt/renewal/$(hostname -f).conf во время запроса сертификата.
Проверить статус:
# systemctl status certbot.timer
Статус должен быть enabled/active (waiting).
Проверьте свой сертификат в браузере и наблюдайте за выводом TLS в /var/log/mail.log.
Проверить шифрование TLS вашего почтового сервера можно здесь:
Ниже несколько ссылок, которые стоит прочитать:
Документация тут:
Важно: что нужно знать о проблемах проверки TLS-SNI
Про Let's Encrypt и записи DNS CAA читайте здесь:
Если вас не интересует CAA, ничего делать не надо, но если возникнут ошибки — смотрите раздел про ошибки CAA в документе выше.
Если хотите использовать записи CAA, воспользуйтесь генератором CAA:
Proxmox Mail Gateway использует ключи и сертификаты для установления защищенных соединений. Приложение использует ключи и сертификаты, хранящиеся здесь:
/etc/pmg/pmg-api.pem — ключ и сертификат (вместе) для HTTPS-сервера (API)
/etc/pmg/pmg-tls.pem — ключ и сертификат (вместе) для шифрования почтового трафика (TLS)
Учтите, что само приложение может перезаписывать некоторые файлы ключей и сертификатов, например, если вы отключаете и включаете TLS в настройках почтового прокси.
Для замены TLS-сертификатов мы запрашиваем их у CA Let's Encrypt с помощью приложения certbot.
Требования:
- Открыт входящий HTTP-трафик (порт 80).
- Корректно настроено имя хоста.
- В конфигурации PMG Mail Proxy включены TLS и логирование TLS.
Установка
Рекомендуется использовать certbot из репозитория stretch-backports. Для этого добавьте репозиторий в /etc/apt/sources.list:
# vi /etc/apt/sources.list
Добавьте строку:
deb stretch-backports main
После сохранения выполните:
# apt-get update
Чтобы установить certbot, выполните:
# apt-get install certbot -t stretch-backports
Перед запросом сертификата создайте скрипт post-hook в каталоге /root:
# cd /root
# vi certbot-post-hook.sh
Код скрипта:
#!/bin/bash
# post-hook, смотрите renewalparams в /etc/letsencrypt/renewal/$(hostname -f).conf
# замена почтового сертификата
cat /etc/letsencrypt/live/$(hostname -f)/fullchain.pem /etc/letsencrypt/live/$(hostname -f)/privkey.pem >/etc/pmg/pmg-tls.pem
chown root:root /etc/pmg/pmg-tls.pem
chmod 600 /etc/pmg/pmg-tls.pem
# замена http сертификата
cat /etc/letsencrypt/live/$(hostname -f)/fullchain.pem /etc/letsencrypt/live/$(hostname -f)/privkey.pem >/etc/pmg/pmg-api.pem
chown root:www-data /etc/pmg/pmg-api.pem
chmod 640 /etc/pmg/pmg-api.pem
systemctl restart pmgproxy
Дайте скрипту права на выполнение:
# chmod 700 certbot-post-hook.sh
Теперь можно запросить сертификат:
# certbot certonly --authenticator standalone --preferred-challenges http --post-hook "/root/certbot-post-hook.sh" -d $(hostname -f)
Введите ваш email, согласитесь с условиями использования и ответьте, хотите ли вы делиться своим email.
Поздравляем, вы запросили и установили (через post-hook) сертификат Let's Encrypt.
Автоматическое обновление
Пакет Debian поставляется с cron-заданием и таймером systemd. cron-задание не будет запускать renew, если обнаружит systemd (/run/systemd/system). Всё происходит через certbot.timer.
Чтобы обновление проходило автоматически, убедитесь, что certbot.timer включен и запущен. Параметры Post-Hook и Preferred Challenges сохраняются в /etc/letsencrypt/renewal/$(hostname -f).conf во время запроса сертификата.
Проверить статус:
# systemctl status certbot.timer
Статус должен быть enabled/active (waiting).
Проверьте свой сертификат в браузере и наблюдайте за выводом TLS в /var/log/mail.log.
Проверить шифрование TLS вашего почтового сервера можно здесь:
