Renouveler des domaines à l'aide de certbot et à l'aide d'un défi DNS

9

J'ai créé plusieurs certificats SSL pour plusieurs domaines en utilisant la méthode autonome. Je ne suis intéressé que par les certificats, sans intégration serveur.

Ils sont maintenant à renouveler. J'ai donc couru:

certbot -d example.com --manual --preferred-challenges dns certonly

Et j'ai suivi les instructions pour chaque domaine (en ajoutant l'entrée DNS requise pour chacun). De cette façon, je n'ai pas eu à arrêter le serveur et à obtenir mes nouveaux certificats.

Ma compréhension (vague) de tout cela est qu'il n'y a aucun moyen actuel de renouveler automatiquement les certificats en utilisant le défi DNS. Ou peut-être que vous ne pouvez pas renouveler automatiquement les certificats pour la méthode "manuelle"?

Quoi qu'il en soit, j'ai écrit ce script:

#!/bin/bash

for i in renewal/*;do
  n=${i:8:-5};
  echo $n;
  # echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly;
done

À ce stade, dans l' renewalannuaire, TOUS les domaines ont:

authentificateur = manuel

Et:

pref_challs = dns-01

Des questions:

  • Maintenant ... quand j'exécute "renouvellement de certbot", va-t-il tous les renouveler automatiquement sans utiliser mon script?

  • Comment puis-je réellement créer un nouveau certificat en utilisant le défi DNS pour commencer?

Merc
la source

Réponses:

4

Réponse mise à jour (voir la réponse originale ci-dessous)

Dans ma réponse d'origine, je me suis concentré sur le fait que le script que vous avez fourni n'est pas requis lors de l'utilisation de la renewcommande. Cependant, je ne me suis pas assuré que la renewcommande est réellement applicable dans ce scénario.

Comme cdhowie et bobpaul dans l'état des commentaires: certbot renewest un mode non interactif qui - en conjonction avec le défi dns - vous oblige à fournir un script via le --manual-auth-hookparamètre. Ce script doit être capable de créer un TXTenregistrement. Vous pouvez également fournir un autre script à nettoyer ensuite via le --manual-cleanup-hookparamètre.

Si vous fournissez ces paramètres, l'ensemble du processus s'exécutera automatiquement sans aucune interaction.

Si vous ne fournissez pas ces paramètres, certbot échouera:

/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)

Si vous souhaitez renouveler vos certificats via le mode manuel, vous devez réexécuter les commandes que vous avez utilisées pour acquérir les certificats. Dans ce cas, votre script est une bonne option car la certonlycommande ne regarde pas les certificats / configuration actuels et vous oblige à la place à fournir les noms de domaine via le -dparamètre ou en mode interactif.


lorsque j'exécute "certbot renouvellement", est-ce qu'il les renouvellera tous automatiquement sans utiliser mon script?

TL; DR: Oui, ça devrait.

Jetons un œil à la documentation de certbot :

Depuis la version 0.10.0, Certbot prend en charge une action de renouvellement pour vérifier l'expiration imminente de tous les certificats installés et tenter de les renouveler. La forme la plus simple est tout simplement

renouvellement de certbot

Jusqu'ici tout va bien.

Cette commande tente de renouveler tous les certificats précédemment obtenus qui expirent dans moins de 30 jours.

Ceci devrait répondre à votre question. Attention: je ne certbotsais pas dans quelle mesure peut gérer les situations où vous déplacez les certificats vers différents répertoires.

Plus loin dans le même paragraphe:

Le même plugin et les mêmes options que ceux utilisés au moment de l'émission du certificat seront utilisés pour la tentative de renouvellement, sauf si vous spécifiez d'autres plugins ou options. Contrairement à certonly, renewagit sur plusieurs certificats et prend toujours en compte si chacun est proche de l'expiration.

Donc oui; certbotdevrait renouveler tous vos certificats sans l'aide de votre script.


Comment puis-je réellement créer un nouveau certificat en utilisant le défi DNS pour commencer?

Quel est le problème avec la commande que vous avez publiée au début de votre message? certbot -d example.com --manual --preferred-challenges dns certonlyva acquérir un certificat pour example.com en utilisant le défi dns.

Les étapes pour créer un certificat sont les suivantes:

  • Exécutez la certbotcommande que vous avez publiée
  • Attendez que la commande vous montre un enregistrement DNS TXT
  • Créez cet enregistrement TXT
  • Continuez la certbotcommande
  • Obtenez un certificat pour le domaine spécifié
  • Supprimez l'enregistrement TXT (car vous n'en avez besoin que pour la création et un nouveau pour le renouvellement)

Si vous souhaitez automatiser ce processus complet, vous voudrez peut-être jeter un œil à un outil comme lego qui prend en charge quelques fournisseurs DNS .

malte
la source
Fantastique, vous fera savoir si cela fonctionne dans quelques mois!
Merc
Ouais, donc ne l'utilisez généralement pas --manual. L'objectif de --manualest de forcer le mode interactif. Mais vous pouvez utiliser des plugins DNS comme aws ou digitalocean certonlysans l' --manualoption et ils se renouvelleront automatiquement avant 90 jours.
bobpaul
Merci pour la contribution, j'ai mis à jour la réponse.
malte