certbot_route53
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: root
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 и webroot).
Для полного примера: смотрите полностью функционирующий тестовый плейбук в molecule/default/playbook-standalone-nginx-aws.yml.
certbot_create_if_missing: false
certbot_create_method: certonly
Установите certbot_create_if_missing
в yes
или True
, чтобы позволить этой роли генерировать сертификаты. Установите метод, используемый для генерации сертификатов, с помощью переменной certbot_create_method
— текущие разрешенные значения включают: certonly
.
certbot_admin_email: [email protected]
Электронная почта, которая используется для согласия с условиями использования 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
определяет команду, используемую для генерации сертификата.
Установка из исходников через 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:
- thiagoalmeidasa.certbot_route53
Смотрите другие примеры в директории 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
Installs and configures Certbot (for Let's Encrypt).
ansible-galaxy install thiagoalmeidasa/ansible-role-certbot-route53