inofix.acme-setup

Configuration Acme

Ceci est un rôle Ansible pour configurer et préparer tout ce qui est nécessaire à la signature ultérieure de certificats avec Let's Encrypt, c'est-à-dire installer l'utilisateur, les répertoires et scripts pertinents, et définir correctement les permissions.

Ce rôle est destiné à être exécuté sur n'importe quel hôte nécessitant des certificats pour lui-même ou en signant des certificats pour un autre hôte.

Voir inofix.acme-request pour la création de la clé privée et des demandes de certificats, ainsi que pour l'installation d'une demande créée à distance sur un hôte "de signature" ou "proxy de certificat".

Le rôle inofix.acme-tiny-install installe le script acme-tiny sur les hôtes "de signature".

Les rôles inofix.acme-tiny-sign et inofix.acme-tiny-cron s'occupent respectivement de la signature réelle (ou périodique) des certificats sur les hôtes "de signature".

Tout hôte qui signe des certificats avec le service Let's Encrypt nécessite un serveur web écoutant sur le port 80 et résolvant /.well-known/acme-challenge vers le répertoire accessible pour l'outil de signature - voir inofix.acme-sign pour un exemple.

Les hôtes qui dépendent d'autres hôtes pour signer des certificats (par exemple, ils n'ont pas de service web installé) peuvent accéder et transférer les certificats signés prêts depuis leur hôte proxy avec inofix.acme-proxy.

Voir "Aperçu / Concept" ci-dessous pour plus de détails.

Le développement de ce rôle a commencé sous le nom de zwischenloesung.acme-tiny-setup.

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 sera utilisé par maestro et doit suivre la logique utilisée là-bas. (Bien sûr, le rôle peut être utilisé sans maestro...)

État

préSTABLE (Gel de fonctionnalités/RC)

Promesse

Bien sûr, ce rôle peut changer à l'avenir, mais nous n'ajouterons que des fonctionnalités pour ne pas rompre la compatibilité avec les versions précédentes.

Si des changements radicaux deviennent nécessaires, un nouveau rôle sera créé, probablement avec un suffixe de version...

Installation

# ansible-galaxy install inofix.acme-setup

Exigences

  • Ansible >2.0
  • Python2/3 sur l'hôte cible
  • UNIX générique avec FHS
  • Sudo
  • Systemd (par défaut)

Aperçu / Concept

Comme c'est réellement le rôle central et le seul rôle nécessaire sur n'importe quel hôte impliqué, un aperçu est fourni dans ce README.

Perspective du rôle

  • inofix.acme-setup
    • exécuté sur n'importe quel hôte
    • configure l'environnement
      • crée l'utilisateur 'acme'
      • crée les clés, etc.
        • /etc/ssl/acme
          • scripts
          • services connectés
        • /var/log/acme
          • journaux
        • /var/lib/acme
          • répertoire personnel pour l'utilisateur signant et copiant les certificats
  • inofix.acme-request
    • exécuté sur les hôtes utilisant ou signant un certificat
    • sur les hôtes utilisant un certificat
      • crée la clé privée
      • crée une demande de certificat (CSR)
    • sur les hôtes proxy
      • installe la CSR des hôtes "hors ligne"
  • inofix.acme-tiny-install
    • exécuté sur les hôtes signant des certificats avec Let's Encrypt
    • installe le script acme-tiny.py
  • inofix.acme-tiny-sign
    • exécuté sur les hôtes signant des certificats avec Let's Encrypt
      • a seulement besoin de la CSR : la clé privée n'est même pas lue (ou absente pour le proxy)
      • utilise acme-tiny.py pour demander à Let's Encrypt de signer un certificat pour la CSR
  • inofix.acme-tiny-cron
    • exécuté sur les hôtes signant des certificats avec Let's Encrypt
      • a seulement besoin de la CSR : la clé privée n'est même pas lue (ou absente pour le proxy)
      • installe un job cron pour faire la partie signature (comme dans inofix.acme-tiny-sign)
  • inofix.acme-proxy
    • exécuté sur les hôtes utilisant un certificat mais ne faisant pas eux-mêmes la signature (par exemple, mail/jabber/..)
    • copie le certificat depuis un hôte distant (qui a fait la signature)
  • inofix.acme-service-..
    • exécuté sur tous les hôtes utilisant un certificat (c'est-à-dire exécutant un service certifié...)
    • enregistre un service à redémarrer si un certificat a changé

Perspective de l'hôte

  • Un hôte qui agit uniquement comme hôte de signature et qui n'a lui-même aucun service utilisant les certificats devra exécuter ces rôles :
    • inofix.acme-setup (ce rôle)
    • inofix.acme-tiny-install
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (pour répéter automatiquement la signature une fois par mois)
  • Un hôte qui utilise uniquement les certificats, mais ne demande pas lui-même la signature directement avec Let's Encrypt devra exécuter ces rôles :
    • inofix.acme-setup (ce rôle)
    • inofix.acme-request
    • inofix.acme-proxy (pour obtenir automatiquement les certificats depuis un hôte distant)
    • inofix.acme-service-<service> (pour redémarrer le service si le certificat a changé)
  • Un hôte qui exécute à la fois un outil de demande de signature et un certain service devra exécuter ces rôles :
    • inofix.acme-setup (ce rôle)
    • inofix.acme-tiny-install
    • inofix.acme-request
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (pour répéter automatiquement la signature une fois par mois)
    • inofix.acme-service-<service> (pour redémarrer le service si le certificat a changé)

Variables du rôle

  • app__acme__user - optionnel, par défaut='acme'
  • app__acme__group - optionnel, par défaut='acme'
  • app__acme__home - optionnel, par défaut='/var/lib/acme'
  • app__acme__config_dir - optionnel, par défaut='/etc/ssl/acme'
  • app__acme__openssl_config - optionnel, par défaut='/etc/ssl/openssl.cnf'
  • app__acme__challenge_dir - optionnel, par défaut='/var/www/acme-challenges'
  • app__acme__scripts_dir - optionnel, par défaut='/etc/ssl/acme/scripts'
  • app__acme__service_dir - optionnel, par défaut='/etc/ssl/acme/service.d'
  • app__acme__bin_dir - optionnel, par défaut='/usr/local/bin'
  • app__acme__account_key - optionnel, par défaut='account.key'
  • app__acme__key_length - optionnel, par défaut=4096
  • app__acme__ssh_keytype - optionnel, par défaut='rsa'
  • app__acme__log_dir - optionnel, par défaut='/var/log/acme'
  • app__acme__letsencrypt_certs - optionnel, par défaut=[ {url='https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem', file='intermediate.crt'}, {url='https://letsencrypt.org/certs/isrgrootx1.pem', file='ca.crt'} ]
  • app__acme__cron_minute - optionnel, par défaut='11'
  • app__acme__cron_hour - optionnel, par défaut='5'
  • app__acme__cron_day - optionnel, par défaut='*'
  • app__acme__cron_month - optionnel, par défaut='*'
  • app__acme__cron_year - optionnel, par défaut='*'
  • fqdn - optionnel, par défaut={{ ansible_fqdn | d(inventory_hostname) }}
  • workdir - optionnel, par défaut=/tmp (répertoire local, utilisé pour l'échange de clé pub SSH)

Dépendances

Exemple de Playbook

- hosts: servers
  roles:
     - inofix.acme-setup

Voir https://raw.githubusercontent.com/inofix/common-playbooks/master/setup-lets-encrypt.yml pour un playbook complet avec tous les rôles concernés inclus.

Licence

GPLv3

Informations sur l’auteur

Installer
ansible-galaxy install inofix.acme-setup
Licence
gpl-3.0
Téléchargements
507
Propriétaire
INOFIX is a Luzern based software company focused on the development of free software and system solutions.