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

Если вы хотите полностью автоматизировать процесс добавления нового сертификата, но не хотите использовать встроенную функциональность этой роли, вы можете сделать это с помощью командной строки для регистрации, принятия условий использования и затем генерации сертификата с помощью автономного сервера:

  1. Убедитесь, что любые сервисы, прослушивающие порты 80 и 443 (Apache, Nginx, Varnish и т. д.), остановлены.
  2. Зарегистрируйтесь с помощью команды certbot register --agree-tos --email [ваш[email protected]] - Примечание: Вам не нужно будет повторять этот шаг в будущем, когда вы будете генерировать дополнительные сертификаты на том же сервере.
  3. Сгенерируйте сертификат для домена, чей DNS указывает на этот сервер: certbot certonly --noninteractive --standalone -d example.com -d www.example.com
  4. Перезапустите любые сервисы, которые прослушивали порты 80 и 443 ранее.
  5. Обновите конфигурацию TLS вашего виртуального хоста веб-сервера, чтобы указать на новый сертификат (fullchain.pem) и приватный ключ (privkey.pem), которые Certbot только что сгенерировал для домена, который вы указали в команде certbot.
  6. Перезагрузите или перезапустите ваш веб-сервер, чтобы он использовал новую конфигурацию виртуального хоста 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
Лицензия
mit
Загрузки
6889
Владелец