acme_sh
acme_sh
Настройте acme.sh в режиме dns api с помощью ansible для генерации сертификатов letsencrypt.org.
Зависимости
Многое из настроек по умолчанию предполагает использование nginx.
Переменные
Вот некоторые параметры по умолчанию, которые контролируют поведение:
acme_sh_autoupgrade: True
acme_sh_server: letsencrypt
acme_sh_notify: False
acme_sh_logging: False
acme_sh_keylength: 4096
acme_sh_dns_sleep: 120
acme_sh_certs_public_dir: /etc/nginx/certs
acme_sh_certs_private_dir: /etc/nginx/private
acme_sh_reload_cmd: /bin/systemctl reload nginx
Пример плейбука
Вот пример использования AWS Route53 API. Но вы можете изменить его для любого провайдера dns api.
Использование:
- hosts: servers
roles:
- role: thermistor.acme_sh
acme_sh_subject_names:
- example.com
- www.example.com
acme_sh_dns_provider: dns_aws
acme_sh_env:
AWS_ACCESS_KEY_ID: "{{ ваш_доступ_ключ_aws }}"
AWS_SECRET_ACCESS_KEY: "{{ ваш_секретный_ключ_aws }}"
Вот тот же пример, но с добавленным логированием:
- hosts: servers
roles:
- role: thermistor.acme_sh
acme_sh_logging: True
acme_sh_subject_names:
- example.com
- www.example.com
acme_sh_dns_provider: dns_aws
acme_sh_env:
AWS_ACCESS_KEY_ID: "{{ ваш_доступ_ключ_aws }}"
AWS_SECRET_ACCESS_KEY: "{{ ваш_секретный_ключ_aws }}"
А вот с уведомлениями от mailgun:
- hosts: servers
roles:
- role: thermistor.acme_sh
acme_sh_notify: True
acme_sh_notify_hooks:
- mailgun
acme_sh_subject_names:
- example.com
- www.example.com
acme_sh_dns_provider: dns_aws
acme_sh_env:
AWS_ACCESS_KEY_ID: "{{ ваш_доступ_ключ_aws }}"
AWS_SECRET_ACCESS_KEY: "{{ ваш_секретный_ключ_aws }}"
MAILGUN_API_KEY: "{{ ваш_mailgun_api_ключ }}"
MAILGUN_API_DOMAIN: "{{ ваш_mailgun_домен }}"
MAILGUN_FROM: "{{ ваш_mailgun_от }}"
MAILGUN_TO: "{{ ваш_mailgun_для }}"
Что происходит за кулисами
Если вы генерируете сертификат для example.com, на этапе установки эта роль скопирует файл /var/lib/acme/.acme.sh/example.com/fullchain.cer
и установит его как /etc/nginx/certs/example.com.cer
. Обратите внимание, что устанавливается сертификат fullchain и переименовывается, это нужно для того, чтобы вы могли установить несколько сертификатов fullchain для разных доменов, если это необходимо.
Устранение неисправностей
Если возникают проблемы с неправильной конфигурацией сертификатов, иногда вы можете столкнуться с состоянием, когда сертификаты не переустанавливаются. Вы можете принудительно переустановить сертификаты с помощью:
ansible-playbook -i inventory playbook.yml -e "acme_sh_force_install=True" --tags acme_sh_cert_install
Лицензия
MIT
Альтернативы
Мы заимствовали много идей из этих альтернатив:
- nickjj.acme_sh - поддерживает несколько сертификатов
- verosk.acme-sh - просто установка
ansible-galaxy install thermistor/acme_sh