Suivant: , Précédent: , Monter: Services   [Table des matières][Index]


8.8.17 Services de certificats

Le module (gnu services certbot) fournit un service qui récupère automatiquement un certificat TLS valide de l’autorité de certification Let’s Encrypt. Ces certificats peuvent ensuite être utilisés pour servir du contenu de manière sécurisée sur HTTPS et d’autres protocoles basés sur TLS, en sachant que le client sera capable de vérifier l’authenticité du serveur.

Let’s Encrypt fournit l’outil certbot pour automatiser le processus de certification. Cet outil génère d’abord un clef sur le serveur de manière sécurisée. Ensuite il demande à l’autorité de certification Let’s Encrypt de signer la clef. La CA vérifie que la requête provient de l’hôte en question en utilisant un protocole de défi-réponse, ce qui requiert que le serveur fournisse sa réponse par HTTP. Si ce protocole se passe sans encombre, la CA signe la clef et on obtient un certificat. Ce certificat est valide pour une durée limitée et donc, pour continuer à fournir des services en TLS, le serveur doit régulièrement demander à la CA de renouveler sa signature.

Le service certbot automatise ce processus : la génération initiale de la clef, la demande de certification initiale au service Let’s Encrypt, l’intégration du protocole de défi/réponse dans le serveur web, l’écriture du certificat sur le disque, les renouvellements périodiques et les taches de déploiement avec le renouvellement (p. ex. recharger les services, copier les clefs avec d’autres permissions).

Certbot est lancé deux fois par jour, à une minute aléatoire dans l’heure. Il ne fera rien sauf si vos certificats doivent être renouvelés ou sont révoqués, mais le lancer régulièrement permettra à vos services de rester en ligne si Let’s Encrypt décide de révoquer votre certificat.

En utilisant ce service, vous acceptez le document « ACME Subscriber Agreement », qu’on peut trouver ici : https://acme-v01.api.letsencrypt.org/directory.

Variable Scheme : certbot-service-type

Un type de service pour le client Let’s Encrypt certbot. Sa valeur doit être un enregistrement certbot-configuration comme dans cet exemple :

(define %nginx-deploy-hook
  (program-file
   "nginx-deploy-hook"
   #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read)))
       (kill pid SIGHUP))))

(service certbot-service-type
         (certbot-configuration
          (email "foo@example.net")
          (certificates
           (list
            (certificate-configuration
             (domains '("example.net" "www.example.net"))
             (deploy-hook %nginx-deploy-hook))
            (certificate-configuration
             (domains '("bar.example.net")))))))

Voir plus bas pour des détails sur certbot-configuration.

Type de données : certbot-configuration

Type données représentant la configuration du service certbot. Ce type a les paramètres suivants :

package (par défaut : certbot)

Le paquet certbot à utiliser.

webroot (par défaut : /var/www)

Le répertoire depuis lequel servir les fichiers du défi/réponse de Let’s Encrypt.

certificates (par défaut : ())

Une liste de certificates-configuration pour lesquels générer des certificats et demander des signatures. Chaque certificat a un name et plusieurs domains.

email

Courriel obligatoire utilisé pour la création de compte, le contact en cas de problème et des notifications importantes sur le compte.

server (default: #f)

Optional URL of ACME server. Setting this overrides certbot’s default, which is the Let’s Encrypt server.

rsa-key-size (par défaut : 2048)

Taille de la clef RSA.

default-location (par défaut : voir plus bas)

Le nginx-location-configuration par défaut. Comme certbot doit pouvoir servir les défis et les réponses, il doit être capable de lancer un serveur web. Cela se fait en étendant le service web nginx avec un nginx-server-configuration qui écoute sur les domains sur le port 80 et qui a un nginx-location-configuration pour le chemin /.well-known/ utilisé par Let’s Encrypt. Voir Services web pour plus d’information sur les types de données de la configuration de nginx.

Les requêtes vers d’autres URL correspondra à default-location, qui, s’il est présent, sera ajout é à tous les nginx-server-configuration.

Par défaut, le default-location sera une redirection de http://domain/… vers https://domain/…, en vous laissant définir ce que vous voulez servir sur votre site en https.

Passez #f pour ne pas utiliser de location par défaut.

Type de données : certificate-configuration

Type de données représentant la configuration d’un certificat. Ce type a les paramètres suivants :

name (par défaut : voir plus bas)

Ce nom est utilisé par Certbot pour ses tâches quotidiennes et dans les chemins de fichiers ; il n’affecte pas le contenu des certificats eux-mêmes. Pour voir les noms des certificats, lancez certbot certificates.

Sa valeur par défaut est le premier domaine spécifié.

domains (par défaut : ())

Le premier domaine spécifié sera le CN du sujet du certificat, et tous les domaines seront les noms alternatifs du sujet dans le certificat.

challenge (par défaut : #f)

The challenge type that has to be run by certbot. If #f is specified, default to the HTTP challenge. If a value is specified, defaults to the manual plugin (see authentication-hook, cleanup-hook and the documentation at https://certbot.eff.org/docs/using.html#hooks), and gives Let’s Encrypt permission to log the public IP address of the requesting machine.

authentication-hook (par défaut : #t)

Commande à lancer dans un shell une fois par défi de certificat auquel répondre. Pour cette commande, la variable shell $CERTBOT_DOMAIN contiendra le domaine à authentifier, $CERTBOT_VALIDATION contiendra la chaîne de validation et $CERTBOT_TOKEN contiendra le nom de fichier de la ressource demandée pour le défi HTTP-01.

cleanup-hook (par défaut : #f)

Commande à lancer dans un shell une fois par défi de certificat auquel auth-hook a répondu. Pour cette commande, les variables shell disponibles dans le script auth-hook sont toujours disponibles, et en plus $CERTBOT_AUTH_OUTPUT contiendra la sortie standard du script auth-hook.

deploy-hook (par défaut : #f)

Commande à lancer dans un shell une fois par certificat récupéré avec succès. Pour cette commande, la variable $RENEWED_LINEAGE pointera sur le sous-répertoire live (par exemple, ‘"/etc/letsencrypt/live/example.com"’) contenant le nouveau certificat et la clef ; la variable $RENEWED_DOMAINS contiendra les noms de domaines séparés par des espaces (par exemple ‘"example.com www.example.com"’).

Pour chaque certificate-configuration, le certificat est sauvegardé dans /etc/letsencrypt/live/name/fullchain.pem et la clef est sauvegardée dans /etc/letsencrypt/live/name/privkey.pem.


Suivant: , Précédent: , Monter: Services   [Table des matières][Index]