simp_le
ansible-role-simp_le
Установите simp_le, сгенерируйте сертификаты и автоматически обновляйте их на серверах Debian/Ubuntu.
Попытки обновления будут производиться ежедневно с помощью cron-задачи, запущенной удаленным пользователем Ansible.
Смотрите роль на Ansible Galaxy: L-P.simp_le
Примечание: Я начал использовать acmetool и рекомендую вам сделать то же самое для любых новых серверов с Ubuntu ≥ 16.04.
Обязательные переменные
Список виртуальных хостов, для которых мы будем генерировать сертификаты:
simp_le_vhosts:
- domains: ["www.example.com", "example.com"]
root: "/path/to/challenges" # доступно через HTTP
output: "/path/to/output/dir" # куда записывать сертификаты
Адрес электронной почты, который LetsEncrypt будет использовать для вашей идентификации и отправки уведомлений об обновлении:
simp_le_email: "[email protected]"
Есть три необязательных ключа, которые можно установить для хостов:
user
иgroup
, чтобы указать, кто будет владельцем ключей, задач и их родительских директорий. Владелец по умолчанию -www-data:www-data
.extra_args
, чтобы передать дополнительные аргументы симп_ле, это можно использовать для работы с тестовым сервером LetsEncrypt или указать симп_ле повторно использовать пару ключей при обновлении сертификата. Это полезно, если вы используете записи TLSA, тогда вы можете использовать тип селектора 1 (SubjectPublicKeyInfo), и ваша запись TLSA не нуждается в изменении при обновлении сертификата.update_action
- команда, которая будет выполнена при обновлении сертификата, например,systemctl restart apache2
.
Пример:
simp_le_vhosts:
- domains: ["smtp.example.com", "mail.example.com"]
root: "/path/to/challenges"
output: "/path/to/output/dir"
user: "Debian-exim"
group: "Debian-exim"
extra_args: "--reuse_key --server https://acme-staging.api.letsencrypt.org/directory"
update_action: "/bin/systemctl restart exim4"
Смотрите defaults/main.yml
для дополнительной конфигурации.
Конфигурация сервера
Ваш сервер должен обслуживать файлы задач по HTTP, вот пример конфигурации для nginx, которая будет перенаправлять все HTTP-запросы на HTTPS, кроме задач:
location /.well-known/acme-challenge/ {
alias /var/www/challenges/.well-known/acme-challenge/;
try_files $uri @forward_https;
}
location @forward_https {
return 301 https://example.com$request_uri;
}
location / {
return 301 https://example.com$request_uri;
}
Пример playbook
- hosts: all
roles:
- {role: "L-P.simp_le", become: no}
Хотя большая часть операций выполняется без sudo
, он все равно используется для создания различных директорий с правильными правами и владельцами.
simp_le installation and certificate generation for Ubuntu/Debian.
ansible-galaxy install L-P/ansible-role-simp_le