Craignez-vous que le certificat générique letencrypt ne puisse pas être automatiquement renouvelé (renouvelé) à l'aide de l'outil certbot ? Cet outil peut vous aider !
Quelle que soit la demande ou le renouvellement, tant qu'il s'agit d'un certificat générique, le nom de domaine du demandeur ne peut être vérifié qu'à l'aide de dns-01, ce qui signifie que l'opérateur du certbot doit ajouter manuellement les enregistrements DNS TXT.
Si vous écrivez un Cron (tel que 1 1 */1 * * root certbot-auto renouveler) pour renouveler automatiquement le certificat générique, Cron ne peut pas ajouter automatiquement l'enregistrement TXT, donc l'opération de renouvellement échouera. Comment le résoudre ?
certbot fournit un hook qui vous permet d'écrire un script Shell pour appeler l'interface API du fournisseur de services DNS et ajouter dynamiquement des enregistrements TXT, éliminant ainsi le besoin d'une intervention manuelle.
Parmi les exemples de plug-ins et de hooks officiellement fournis par certbot, il n'y a aucun exemple pour les serveurs DNS nationaux, j'ai donc écrit un tel outil, qui prend actuellement en charge Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS et GoDaddy (certbot n'a pas équivalent officiel).
Plusieurs PR ont été fusionnés récemment et n'ont pas été testés. Si vous avez des questions, n'hésitez pas à me faire part de vos commentaires. Merci !
1 : Télécharger
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2 : Configuration
(1)domaine.ini
Si le fichier domain.ini ne contient pas votre nom de domaine racine, veuillez l'ajouter vous-même.
(2) Clé API DNS :
Que signifie cette clé API ? Étant donné que vous devez exploiter les enregistrements Alibaba Cloud DNS et Tencent Cloud DNS via l'API, vous devez obtenir la clé API auprès du fournisseur de services de noms de domaine, puis la configurer dans le fichier au.sh :
(3) Sélectionnez l'environnement d'exploitation
Actuellement, l'outil prend en charge cinq environnements d'exploitation et scénarios, appelés via des fichiers hook et des paramètres :
Choisissez n'importe quel shell de hook (y compris les paramètres correspondants) en fonction de votre propre environnement de serveur et de votre fournisseur de services de noms de domaine. Voir ci-dessous pour une utilisation spécifique.
3 : Demander un certificat
Testez les erreurs :
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Débogage : vous pouvez rencontrer une série de problèmes lors de l'utilisation de l'API DNS, tels que des autorisations insuffisantes pour les jetons d'API. Si vous rencontrez des problèmes liés, vous pouvez vérifier /var/log/certd.log.
Explication importante : --manual-auth-hook et --manual-cleanup-hook ont trois paramètres :
Par exemple, si vous souhaitez choisir l'environnement Python, vous pouvez modifier l'entrée --manual-auth-hook en "/script directory/au.sh python aly add", et l'entrée --manual-cleanup-hook en "/ répertoire de script/au.sh python aly clean"
Après avoir confirmé qu'il est correct, exécutez réellement (supprimez le paramètre --dry-run) :
# 实际申请
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Explication des paramètres (vous n'avez pas à vous en soucier) :
Si vous souhaitez demander des certificats génériques pour plusieurs noms de domaine (combinés en un seul certificat, également appelé certificat générique SAN ), entrez simplement plusieurs paramètres -d directement, par exemple :
$ ./certbot-auto certonly -d *.example.com -d *.example.org -d www.example.cn --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
1 : Renouveler tous les certificats sur la machine
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2 : Renouveler un certain certificat
Regardez d’abord combien de certificats il y a sur la machine :
$ ./certbot-auto certificates
Vous pouvez voir de nombreux certificats, comme le montre la figure :
N'oubliez pas le nom du certificat, tel que simplehttps.com, puis exécutez la commande d'actualisation suivante :
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Editez le fichier /etc/crontab :
#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Si la machine certbot est la même machine qui exécute les services Web (tels que nginx, apache), alors après avoir renouvelé avec succès le certificat, vous pouvez démarrer le serveur Web correspondant et exécuter la crontab suivante :
# 注意只有成功renew证书,才会重新启动nginx
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --deploy-hook "service nginx restart" --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Remarque : Il est recommandé d'exécuter cette méthode uniquement sur une seule machine. Si vous souhaitez synchroniser le certificat sur plusieurs serveurs Web, vous avez besoin d'une autre solution. Actuellement en cours de développement, l'objectif principal est de synchroniser le certificat avec le serveur du cluster.
Code QR du compte officiel :
"Une introduction approfondie au HTTPS : des principes à la pratique" QR code :