Befürchten Sie, dass das Letencrypt-Wildcard-Zertifikat mit dem Certbot-Tool nicht automatisch erneuert (erneuert) werden kann? Dieses Tool kann helfen!
Unabhängig von der Beantragung oder Erneuerung kann der Domänenname des Antragstellers nur mit dns-01 überprüft werden, solange es sich um ein Wildcard-Zertifikat handelt. Dies bedeutet, dass der Certbot-Betreiber manuell DNS-TXT-Einträge hinzufügen muss.
Wenn Sie einen Cron schreiben (z. B. 1 1 */1 * * root certbot-auto renew), um das Wildcard-Zertifikat automatisch zu erneuern, kann Cron den TXT-Eintrag nicht automatisch hinzufügen, sodass der Erneuerungsvorgang fehlschlägt.
certbot bietet einen Hook, mit dem Sie ein Shell-Skript schreiben können, um die API-Schnittstelle des DNS-Dienstanbieters aufzurufen und TXT-Einträge dynamisch hinzuzufügen, sodass kein manueller Eingriff erforderlich ist.
Unter den von certbot offiziell bereitgestellten Plug-in- und Hook-Beispielen gibt es keine Beispiele für inländische DNS-Server. Daher habe ich ein solches Tool geschrieben, das derzeit Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS und GoDaddy unterstützt (certbot hat keine). offizielles Äquivalent).
Mehrere PRs wurden kürzlich zusammengeführt und nicht getestet. Wenn Sie Fragen haben, geben Sie mir bitte Feedback.
1: Herunterladen
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: Konfiguration
(1)domain.ini
Wenn die Datei domain.ini Ihren Stammdomänennamen nicht enthält, fügen Sie ihn bitte selbst hinzu.
(2) DNS-API-Schlüssel:
Was bedeutet dieser API-Schlüssel? Da Sie Alibaba Cloud DNS- und Tencent Cloud DNS-Einträge über die API betreiben müssen, müssen Sie den API-Schlüssel vom Domain Name Service Provider erhalten und ihn dann in der Datei au.sh konfigurieren:
(3) Wählen Sie die Betriebsumgebung aus
Derzeit unterstützt das Tool fünf Betriebsumgebungen und -szenarien, die über Hook-Dateien und Parameter aufgerufen werden:
Wählen Sie eine beliebige Hook-Shell (einschließlich der entsprechenden Parameter) entsprechend Ihrer eigenen Serverumgebung und Ihrem Domänennamen-Dienstanbieter. Informationen zur spezifischen Verwendung finden Sie weiter unten.
3: Beantragen Sie ein Zertifikat
Auf Fehler testen:
$ ./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"
Debuggen: Beim Betrieb der DNS-API können eine Reihe von Problemen auftreten, z. B. unzureichende API-Token-Berechtigungen. Wenn Sie auf entsprechende Probleme stoßen, können Sie /var/log/certd.log überprüfen.
Wichtige Erklärung: --manual-auth-hook und --manual-cleanup-hook haben drei Parameter:
Wenn Sie beispielsweise die Python-Umgebung auswählen möchten, können Sie die Eingabe von --manual-auth-hook in „/script-Verzeichnis/au.sh python aly add“ und die Eingabe von --manual-cleanup-hook in „/“ ändern. Skriptverzeichnis/au.sh python aly clean“
Nachdem Sie bestätigt haben, dass es korrekt ist, führen Sie es tatsächlich aus (entfernen Sie den Parameter --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"
Parametererklärung (Sie brauchen sich darüber keine Sorgen zu machen):
Wenn Sie Wildcard-Zertifikate für mehrere Domänennamen beantragen möchten (kombiniert in einem Zertifikat, auch SAN-Wildcard-Zertifikat genannt), geben Sie einfach mehrere -d-Parameter direkt ein, zum Beispiel:
$ ./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: Erneuern Sie alle Zertifikate auf der Maschine
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2: Ein bestimmtes Zertifikat erneuern
Schauen Sie sich zunächst an, wie viele Zertifikate sich auf der Maschine befinden:
$ ./certbot-auto certificates
Sie können viele Zertifikate sehen, wie in der Abbildung dargestellt:
Merken Sie sich den Namen des Zertifikats, z. B. simplehttps.com, und führen Sie dann den folgenden Befehl „refresh“ aus:
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Bearbeiten Sie die Datei /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"
Wenn es sich bei der Certbot-Maschine um dieselbe Maschine handelt, auf der Webdienste ausgeführt werden (z. B. Nginx, Apache), können Sie nach erfolgreicher Erneuerung des Zertifikats den entsprechenden Webserver starten und die folgende Crontab ausführen:
# 注意只有成功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"
Hinweis: Es wird empfohlen, diese Methode nur auf einem einzelnen Computer auszuführen. Wenn Sie das Zertifikat mit mehreren Webservern synchronisieren möchten, benötigen Sie eine andere Lösung, die derzeit in der Entwicklung ist und deren Hauptzweck darin besteht, das Zertifikat mit dem Clusterserver zu synchronisieren.
Offizieller QR-Code des Kontos:
QR-Code „Eine ausführliche Einführung in HTTPS: von den Prinzipien zur Praxis“: