inofix.acme-tiny-sign
Acme-Tiny Sign
Ceci est un rôle Ansible pour obtenir des certificats numériques avec "Let's Encrypt". Il est fortement inspiré de ce rôle : ganto.acme_tiny. Un grand merci à ganto !
Ce rôle est conçu pour être exécuté sur un système accessible depuis le web. Il effectuera la demande auprès de "Let's Encrypt" à partir d'un CSR existant (voir inofix.acme-request), résoudra le défi dans le répertoire web bien connu du serveur et mettra ensuite les certificats résultants dans le répertoire de configuration OpenSSL.
Les deux autres rôles, inofix.acme-tiny-install et inofix.acme-tiny-request, sont requis. Ce dernier peut être exécuté sur un autre hôte distant pour générer la clé privée et la demande de certificat.
Pourquoi ne pas utiliser un des rôles existants ?
- Pour la première raison, lisez la section "Promesse" ci-dessous. Nous avons besoin de quelque chose de fiable.
- Ce rôle ne se connecte pas au web en tant que root, mais comme un utilisateur non privilégié.
- Ce rôle n'expose pas le fichier de clé privée à l'utilisateur acme non privilégié.
- Cette demande de certificat peut être faite sur une machine distante via inofix.acme-tiny-setup, de sorte que la clé privée ne soit même pas sur l'hôte demandant le certificat.
- Ce rôle sera utilisé par maestro et doit suivre la logique utilisée là-bas. (Bien sûr, le rôle peut être utilisé sans maestro..)
Statut
préSTABLE (Gel des fonctionnalités/RC)
Promesse
Bien sûr, ce rôle pourra changer à l'avenir, mais nous n'ajouterons que des fonctionnalités sans casser la compatibilité rétroactive.
Si des changements radicaux deviennent nécessaires, un nouveau rôle sera créé, probablement avec un suffixe 'ng' ou de version...
Installation
ansible-galaxy install inofix.acme-tiny-sign
Exigences
- Ansible >2.0
- Sur l'hôte cible
- UNIX générique avec FHS
- Python2/3
- OpenSSL
- Sudo
- Serveur web en cours d'exécution avec un répertoire ^/.well-known/acme-challenge/ accessible (codé en dur dans le script acme-tiny..)
- Le serveur web doit servir HTTP, même pour les certificats suivants (pas seulement HTTPS ; exigence d'acme-tiny/let's-encrypt)
- Résoudre tous les noms dans le certificat vers localhost ou l'IP locale
Variables de rôle
- app__acme__user - optionnel, par défaut='acme'
- app__acme__group - optionnel, par défaut='acme'
- app__acme__os__cert_group - optionnel, par défaut='{{ default__acme__group }}'
- app__acme__config_dir - optionnel, par défaut='/etc/ssl/acme'
- app__acme__account_key - optionnel, automatique
- app__acme__challenge_dir - optionnel, par défaut='/var/www/acme-challenge'
- app__acme__domain - optionnel, par défaut=[ {domain='example.com'} ]
- fqdn - optionnel, par défaut={{ ansible_fqdn | d(inventory_hostname) }}
Dépendances
- inofix.acme-tiny-install
- (inofix.acme-setup)
- inofix.acme-request
- (inofix.acme-setup)
Exemple de Playbook
- hosts: servers
roles:
- inofix.acme-tiny-sign
(Voir inofix.acme-setup)
Licence
GPLv3
Informations sur l'auteur
- Michael Lustenberger sur inofix.ch
Sign certs with the famous acme-tiny python script
ansible-galaxy install inofix.acme-tiny-sign