ansibleguy.infra_certs
Rôle Ansible - Générateur de Certificats
Rôle Ansible pour créer des certificats à utiliser sur un serveur Linux.
Logs Molecule : Court, Complet
Testé sur :
- Debian 11
- Debian 12
Installation
# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs
# depuis galaxy
ansible-galaxy install ansibleguy.infra_certs
# ou pour un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles
# installer les dépendances
ansible-galaxy install -r requirements.yml
Utilisation
Vous voulez une interface Ansible simple ? Découvrez ma WebUI Ansible
Remarques
Les modes auto-signé et minimal-ca ne créeront qu'un seul certificat par exécution.
Les réexécutions peuvent économiser du temps en utilisant le tag 'certs'.
Le mode LetsEncrypt créera/retirera plusieurs certificats comme défini.
Configuration
Exemple pour la configuration LetsEncrypt :
certs:
  mode: 'le_certbot'
  path: '/etc/apache2/ssl'
  letsencrypt:
    certs:
      myNiceSite:
        domains: ['myRandomSite.net', 'ansibleguy.net']
        email: '[email protected]'
    service: 'apache'
Exemple pour la configuration auto-signée :
certs:
  mode: 'selfsigned'  # ou 'snakeoil' (si plus rapide)
  # choisissez 'ca' si vous utilisez des noms DNS
  #   certains navigateurs ne vous laisseront pas vous connecter avec des certificats auto-signés
  path: '/etc/nginx/ssl'
  group_key: 'nginx'
  owner_cert: 'nginx'
  cert:
    cn: 'Mon super certificat !'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
    ips: ['192.168.44.2']
    pwd: !vault ...
Exemple pour la configuration minimal-CA :
certs:
  mode: 'ca'
  path: '/etc/ca/certs'
  mode_key: '0400'
  cert:
    name: 'nom_fichier_personnalisé'  # l'extension sera ajoutée
    cn: 'Mon super certificat !'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
  ca:
    path: '/etc/ca'
    cn: 'SUPER Autorité de Certification'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    pwd: !vault ...
En utilisant le mode minimal-CA, vous pouvez créer plusieurs certificats signés par la CA en relançant le rôle avec des paramètres de 'cert' modifiés.
Vous voudrez peut-être utiliser 'ansible-vault' pour chiffrer vos mots de passe :
ansible-vault encrypt_string
Exécution
Exécutez le playbook :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass
Il existe également quelques tags utiles disponibles :
- certs => ignorer les tâches CA ; générez uniquement des certificats
- auto-signé
- config
- certs
Pour déboguer des erreurs, vous pouvez définir la variable 'debug' à l'exécution :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Fonctionnalité
- Installation de paquets - Dépendances d'Ansible (minimales)
- Dépendances Crypto
 
- Configuration - Quatre modes possibles : - Générer un certificat auto-signé
- Utiliser une Autorité de Certification minimale pour créer des certificats signés
- Configurer LetsEncrypt-Certbot pour générer des certificats valides publiquement- Supporté pour Nginx et Apache
- L'hôte doit avoir un enregistrement DNS public valide pointé vers lui
- Doit être accessible publiquement sur le port 80/tcp
 
 
- Configuration par défaut : - Mode => Auto-signé
 
 
Info
- Remarque : ce rôle ne supporte actuellement que les systèmes basés sur Debian 
- Remarque : La plupart des fonctionnalités du rôle peuvent être activées ou désactivées. - Pour toutes les options disponibles, voir la configuration par défaut située dans le fichier de configuration principal! 
- Remarque : Si vous avez besoin de gérer des certificats en masse, vous voudrez peut-être consulter le rôle ansibleguy.infra_pki qui vous permet de créer et de gérer une Infrastructure Publique Key. 
- Remarque : Le nom du fichier du certificat (variable name telle que définie ou autrement CommonName) sera mis à jour : - les espaces sont transformés en traits de soulignement
- tous les caractères sauf "0-9a-zA-Z." sont supprimés
- l'extension de fichier (crt/chain.crt/key/csr) sera ajoutée
 
- Avertissement : Tous les paramètres/variables que vous fournissez ne seront pas vérifiés pour leur validité. Une mauvaise configuration pourrait casser le rôle ! 
- Info : Pour le renouvellement LetsEncrypt, vous devez autoriser les connexions sortantes vers : - 80/tcp, 443/tcp+udp vers acme-v02.api.letsencrypt.org, staging-v02.api.letsencrypt.org (mode débogage) et r3.o.lencr.org 
Meat-role to generate/manage certificates for other roles
ansible-galaxy install ansibleguy.infra_certs
