thermistor.acme_sh
acme_sh
Configure acme.sh en mode API DNS via Ansible pour générer des certificats letsencrypt.org.
Dépendances
Beaucoup de paramètres par défaut supposent l'utilisation de nginx.
Variables
Voici quelques paramètres par défaut qui contrôlent le comportement :
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
Exemple de Playbook
Voici un exemple utilisant AWS Route53 API. Mais vous pouvez le modifier pour tout fournisseur d'API DNS.
Utilisation :
- hosts: serveurs
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: "{{ votre_id_cle_aws_vault }}"
AWS_SECRET_ACCESS_KEY: "{{ votre_cle_secrete_aws_vault }}"
Voici le même exemple mais avec les logs ajoutés :
- hosts: serveurs
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: "{{ votre_id_cle_aws_vault }}"
AWS_SECRET_ACCESS_KEY: "{{ votre_cle_secrete_aws_vault }}"
Et avec des notifications Mailgun :
- hosts: serveurs
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: "{{ votre_id_cle_aws_vault }}"
AWS_SECRET_ACCESS_KEY: "{{ votre_cle_secrete_aws_vault }}"
MAILGUN_API_KEY: "{{ votre_cle_api_mailgun_vault }}"
MAILGUN_API_DOMAIN: "{{ votre_domaine_mailgun_vault }}"
MAILGUN_FROM: "{{ votre_expéditeur_mailgun_vault }}"
MAILGUN_TO: "{{ votre_destinataire_mailgun_vault }}"
Ce qui se passe en arrière-plan
Si vous générez un certificat pour example.com, lors de l'étape d'installation, ce rôle copiera le fichier /var/lib/acme/.acme.sh/example.com/fullchain.cer
et l'installera sous /etc/nginx/certs/example.com.cer
. Notez qu'il installe le certificat fullchain et le renomme, cela permet d'installer plusieurs certificats fullchain pour différents domaines si nécessaire.
Résolution des problèmes
S'il y a des problèmes de mauvaise configuration des certificats, il arrive parfois que vous ne puissiez pas réinstaller les certificats. Vous pouvez forcer la réinstallation des certificats avec :
ansible-playbook -i inventory playbook.yml -e "acme_sh_force_install=True" --tags acme_sh_cert_install
Licence
MIT
Alternatives
Nous avons beaucoup emprunté à ces alternatives :
- nickjj.acme_sh - capable de gérer plusieurs certificats
- verosk.acme-sh - juste installer
ansible-galaxy install thermistor.acme_sh