Ce rôle est chargé de gérer la génération et la régénération des certificats Let’s Encrypt.

Tags internes

  • packages : Installation et configuration des packages ;
  • certificates : Mise en place de la configuration des certificats ;

Traitements spécifiques du jeu de tâches

Afin de permettre la résolution tardive de l’emplacement d’enregistrement des certificats actuels, le nom de la variable à fournir est différentes de celle attendue.

Variable côté jeu de tâches Variable côté rôle
custom_certificates certificates

En supplément de ces configurations manuelles, les définitions de Virtual Host sont converties en certificats. Ainsi les vhosts peuvent être étendus avec les configurations pour les certificats. Détails de la conversion.

Les profils de fournisseur (certificate_profiles) sont déjà définis.

Type certificate_norep

Modifie le type certificate

Propriété Type Requis Défaut Description
repository_name Chemin Oui Nom du certificat dans le dépôt
repository_cert_path Retiré Option retirée
repository_key_path Retiré Option retirée
repository_bundle_path Retiré Option retirée

Variables à fournir

Variable Type Requis Défaut Description
certificates Liste d’objets certificate Non Liste vide Certificats à mettre en place
certificate_account Courriel Oui Adresse du compte let’s encrypt
certificate_profiles Liste d’objets profile Non Profiles des fournisseurs
robocert_version Version number Oui “3.7.0” Version de dnsrobocert à installer
robocert_python Version number Oui “3.7” Version de python exécutant dnsrobocert

Type certificate

Propriété Type Requis Défaut Description
active Booléen Non Vrai Active la définition du certificat
name Chaîne Oui Nom du certificat
domain Chaîne Oui Nom commun du certificat
aliases Liste de chaînes Non Noms alternatifs du certificat
profile Identifiant Oui Profil DNS du certificat
repository_cert_path Chemin Oui Chemin de dépôt du certificat
repository_key_path Chemin Oui Chemin de dépôt de la clé privée
repository_bundle_path Chemin Oui Chemin de dépôt des certificats intermédiaires
install_cert_path Chemin Non Chemins, séparés par des deux-points, où installer le certificat
install_key_path Chemin Non Chemins, séparés par des deux-points, où installer la clé privée
install_bundle_path Chemin Non Chemins, séparés par des deux-points, où installer les certificats intermédiaires
install_cert_with_bundle Non Le certificat installé doit inclure les certificats intermédiaires dans le fichier
apply_cmd Chaîne Non Commande(s) à exécuter pour appliquer le certificat au service

Une commande spéciale propagate pour apply_cmd est disponible. Cette commande permet de propager le certificat sur un autre serveur par SSH. Cette commande prend en paramètres :

  • L’utilisateur devant exécuter la commande SSH ;
  • L’adresse d’un serveur SSH auquel se connecter, avec le nom d’utilisateur indiqué ;
  • Le nom du script sur le serveur distant à exécuter ;

La connexion SSH doit être validée au préalable pour nécessiter aucune interaction. En entrée standard du script exécuté, est passé une archive contenant les fichiers suivants :

  • .env : Informations sur l’opération. Fourni les variables d’environnement :
    • cert_name : Nom du certificat ;
    • apply_cmd : Commandes de base à exécuter ;
  • cert.pem : Le certificat ;
  • privkey.pem : La clé privée ;
  • chain.pem : Les certificats intermédiaires ;

Pour aider au calcul de la commande de base à exécuter par la fonction, le marqueur ;:;:; doit être présent.

Type profile

Voir Section profile de dnsrobocert

Propriété Type Requis Défaut Description
name Identifiant Oui Identifiant du profil
provider Identifiant Oui Identifiant du fournisseur
provider_options Objet Oui Options du fournisseur comme requis par lexicon
sleep_time Entier Non 30 Durée d’attente de la mise à jour de l’enregistrement
max_checks Entier Non 0 Nombre maximum de vérifications
delegated_subdomain FQDN Faux Explicite la délégation du domaine
ttl Entier Oui Durée de vie de l’enregistrement

Conversion Vhost en Certificat

Détail de la conversion des champs de Virtual Host en champs de certificat.

Les types de base sont définis dans BaseVhosts.

Conversion vhost

Type vhost_base vers certificate_norep.

Propriété Certificat Type source Source Détails
active Propriété Virtual Host et Calculé certbot_managed si vhost_name et vhost_activate_https définis sinon Faux Nouvelle propriété équivalente
name Propriété Virtual Host et Calculé certbot_name si défini sinon vhost_root_name puis vhost_name Nouvelle propriété équivalente
domain Propriété Virtual Host vhost_name
aliases Propriété Virtual Host vhost_aliases
profile Propriété Virtual Host certbot_profile Nouvelle propriété équivalente
repository_name Propriété Virtual Host et Calculé certbot_repository_name si défini sinon vhost_root_name puis vhost_name renversé Nouvelle propriété équivalente
install_cert_path Calculé vhosts_base_dir + vhost_name + “conf/ssl/” + vhost_name + “.crt”
install_key_path Calculé vhosts_base_dir + vhost_name + “conf/ssl/” + vhost_name + “.key”
install_bundle_path Calculé vhosts_base_dir + vhost_name + “conf/ssl/” + vhost_name + “-bundle.pem”
install_cert_with_bundle Fixé Faux
apply_cmd Propriété Virtual Host et Calculé “service apache2 reload” + (’;:;:;’ + certbot_command si défini) Nouvelle propriété équivalente

La commande exécutée par défaut est de recharger le service Web. Des commandes supplémentaires peuvent être ajoutées grâce à certbot_command. Le marqueur de séparation ;:;:; est automatiquement placé. L’environnement généré par le script est disponible pour la commande.

Finalisation conversion

Type certificate_norep vers certificate.

Propriété Certificat Type source Source Détails
Retiré repository_name
repository_cert_path Calculé certificate_repository.certs + repository_name + “.pem”
repository_key_path Calculé certificate_repository.private_keys + repository_name + “.pem”
repository_bundle_path Calculé certificate_repository.bundles + “letsencrypt.ca.pem”

Autres rôles

Les vhosts mis en place par les rôles suivants sont aussi pris en compte :

Rôle vhost_name vhost_activate_https certbot_name certbot_managed certbot_profile certbot_repository_name
GitLab gitlab.vhost.name gitlab.vhost.secure gitlab.vhost.certbot_name gitlab.vhost.certbot_managed gitlab.vhost.certbot_profile gitlab.vhost.certbot_repository_name
GitLab Omnibus gitlab_omnibus.vhost.name gitlab_omnibus.vhost.secure gitlab_omnibus.vhost.certbot_name gitlab_omnibus.vhost.certbot_managed gitlab_omnibus.vhost.certbot_profile gitlab_omnibus.vhost.certbot_repository_name
Redmine redmine.vhost True redmine.certbot_name redmine.certbot_managed redmine.certbot_profile redmine.certbot_repository_name
Subversion subversion.admin.vhost True subversion.admin.certbot_name subversion.admin.certbot_managed subversion.admin.certbot_profile subversion.admin.certbot_repository_name
subversion.repositories.vhost True subversion.repositories.certbot_name subversion.repositories.certbot_managed subversion.repositories.certbot_profile subversion.repositories.certbot_repository_name