certbot
Ansible Роль: Certbot (для Let's Encrypt)
Устанавливает и настраивает Certbot (для Let's Encrypt).
Требования
Если установка производится из исходников, требуется Git. Вы можете установить Git, используя роль geerlingguy.git
.
Как правило, установка из исходников (см. раздел Установка из исходников из Git
) ведет к лучшему опыту использования Certbot и Let's Encrypt, особенно если вы используете более старую версию ОС.
Переменные роли
Переменная certbot_install_from_source
управляет тем, будет ли Certbot установлен из Git или через управление пакетами. Последний вариант является значением по умолчанию, поэтому переменная по умолчанию равна no
.
certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user | default(lookup('env', 'USER')) }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30
certbot_auto_renew_options: "--quiet --no-self-upgrade"
По умолчанию эта роль настраивает задачу cron для выполнения под указанной учетной записью пользователя в заданный час и минуту каждый день. По умолчанию команда certbot renew
(или certbot-auto renew
) вызывается через cron каждый день в 03:30:00 от пользователя, которого вы используете в своем Ansible плейбуке. Рекомендуется установить пользователь/час/минуту, чтобы обновление происходило в период низкой нагрузки и осуществлялось учетной записью, отличной от root.
Автоматическое создание сертификатов
В настоящее время существует один встроенный метод для генерации новых сертификатов с помощью этой роли: standalone
. Другие методы (например, использование nginx или apache и веб-каталога) могут быть добавлены в будущем.
Для полного примера: смотрите полностью функциональный тестовый плейбук в molecule/default/playbook-standalone-nginx-aws.yml.
certbot_create_if_missing: false
certbot_create_method: standalone
Установите certbot_create_if_missing
в значение yes
или True
, чтобы разрешить этой роли генерировать сертификаты. Установите метод, используемый для генерации сертификатов, с помощью переменной certbot_create_method
— текущие допустимые значения включают: standalone
.
certbot_admin_email: [email protected]
Адрес электронной почты, используемый для согласия с TOS Let's Encrypt и подписки на уведомления, связанные с сертификатами. Это следует настроить и установить на адрес электронной почты, который вы или ваша организация регулярно мониторят.
certbot_certs: []
# - email: [email protected]
# domains:
# - example1.com
# - example2.com
# - domains:
# - example3.com
Список доменов (и другие данные), для которых должны быть сгенерированы сертификаты. Вы можете добавить ключ email
к любому элементу списка, чтобы переопределить certbot_admin_email
.
certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"
certbot_create_command
определяет команду, используемую для генерации сертификата.
Генерация сертификатов в режиме Standalone
certbot_create_standalone_stop_services:
- nginx
Сервисы, которые следует остановить, пока certbot
запускает свой собственный сервер в режиме standalone на портах 80 и 443. Если вы используете Apache, установите это значение на apache2
(Ubuntu) или httpd
(RHEL), или если у вас на порту 443 работает Nginx и что-то другое на порту 80 (например, Varnish, Java-приложение или что-то еще), добавьте это в список, чтобы оно было остановлено при генерации сертификата.
Эти сервисы будут остановлены только в первый раз, когда будет сгенерирован новый сертификат.
Установка из исходников из Git
Вы можете установить Certbot из его репозитория Git, если это необходимо. Это может быть полезно в нескольких случаях, но особенно когда в старых дистрибутивах недоступны пакеты Certbot (например, CentOS < 7, Ubuntu < 16.10 и Debian < 8).
certbot_install_from_source: false
certbot_repo: https://github.com/certbot/certbot.git
certbot_version: master
certbot_keep_updated: true
Опции репозитория Certbot Git. Чтобы установить из исходников, установите certbot_install_from_source
в значение yes
. Это клонирует указанный certbot_repo
, учитывая значение certbot_version
. Если certbot_keep_updated
установлено в yes
, репозиторий обновляется каждый раз при выполнении этой роли.
certbot_dir: /opt/certbot
Каталог, в который будет клонирован Certbot.
Дикие сертификаты
Let's Encrypt поддерживает генерацию диких сертификатов, но процесс генерации и использования их немного сложнее. Смотрите комментарии в этой пулл-реквесте для примера того, как использовать эту роль для поддержки диких сертификатов.
Майкл Портер также описал процесс Создания диких сертификатов Let's Encrypt с помощью Ansible, в частности, с использованием Cloudflare.
Зависимости
Нет.
Пример плейбука
- hosts: servers
vars:
certbot_auto_renew_user: ваш_логин_здесь
certbot_auto_renew_minute: 20
certbot_auto_renew_hour: 5
roles:
- geerlingguy.certbot
Смотрите другие примеры в директории tests/
.
Ручное создание сертификатов с помощью certbot
Примечание: Вы можете настроить эту роль для автоматической генерации сертификатов; см. документацию выше в разделе "Автоматическое создание сертификатов".
Вы можете вручную создать сертификаты, используя скрипт certbot
(или certbot-auto
) (используйте letsencrypt
на Ubuntu 16.04, или используйте /opt/certbot/certbot-auto
, если устанавливаете из исходников/Git). Вот несколько примерных команд для настройки сертификатов с помощью Certbot:
# Автоматически добавить сертификаты для всех виртуальных хостов Apache (используйте с осторожностью!).
certbot --apache
# Сгенерировать сертификаты, но не изменять конфигурацию Apache (безопаснее).
certbot --apache certonly
Если вы хотите полностью автоматизировать процесс добавления нового сертификата, но не хотите использовать встроенную функциональность этой роли, вы можете сделать это с помощью командной строки для регистрации, принятия условий использования и затем генерации сертификата с помощью автономного сервера:
- Убедитесь, что любые сервисы, прослушивающие порты 80 и 443 (Apache, Nginx, Varnish и т. д.), остановлены.
- Зарегистрируйтесь с помощью команды
certbot register --agree-tos --email [ваш[email protected]]
- Примечание: Вам не нужно будет повторять этот шаг в будущем, когда вы будете генерировать дополнительные сертификаты на том же сервере. - Сгенерируйте сертификат для домена, чей DNS указывает на этот сервер:
certbot certonly --noninteractive --standalone -d example.com -d www.example.com
- Перезапустите любые сервисы, которые прослушивали порты 80 и 443 ранее.
- Обновите конфигурацию TLS вашего виртуального хоста веб-сервера, чтобы указать на новый сертификат (
fullchain.pem
) и приватный ключ (privkey.pem
), которые Certbot только что сгенерировал для домена, который вы указали в командеcertbot
. - Перезагрузите или перезапустите ваш веб-сервер, чтобы он использовал новую конфигурацию виртуального хоста HTTPS.
Автоматическое обновление сертификатов Certbot
По умолчанию эта роль добавляет задачу cron, которая будет обновлять все установленные сертификаты один раз в день в указанное вами время и минуту.
Вы можете протестировать автоматическое обновление (без фактического обновления сертификата) с помощью команды:
/opt/certbot/certbot-auto renew --dry-run
Смотрите полную документацию и параметры на сайте Certbot.
Лицензия
MIT / BSD
Информация об авторе
Эта роль была создана в 2016 году Джеффом Гирлингом, автором Ansible for DevOps.
Installs and configures Certbot (for Let's Encrypt).
ansible-galaxy install ussrlongbow/ansible-role-certbot