Aktualisierte Antwort (siehe Originalantwort unten)
In meiner ursprünglichen Antwort habe ich mich darauf konzentriert, dass das von Ihnen bereitgestellte Skript bei Verwendung des renew
Befehls nicht erforderlich ist . Ich habe jedoch nicht sichergestellt, dass der renew
Befehl in diesem Szenario tatsächlich anwendbar ist.
Wie cdhowie und bobpaul in den Kommentaren angeben: certbot renew
ist ein nicht interaktiver Modus, bei dem Sie in Verbindung mit der DNS-Herausforderung ein Skript über den --manual-auth-hook
Parameter bereitstellen müssen . Das Skript muss in der Lage sein, einen TXT
Datensatz zu erstellen . Sie können auch ein anderes Skript bereitstellen, um es anschließend über den --manual-cleanup-hook
Parameter zu bereinigen .
Wenn Sie diese Parameter angeben, wird der gesamte Prozess automatisch ohne Interaktion ausgeführt.
Wenn Sie diese Parameter nicht angeben, schlägt certbot fehl:
/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.',)
Wenn Sie Ihre Zertifikate über den manuellen Modus erneuern möchten, müssen Sie die Befehle, mit denen Sie die Zertifikate erworben haben, erneut ausführen. In diesem Fall ist Ihr Skript eine gute Option, da der certonly
Befehl die aktuellen Zertifikate / Konfigurationen nicht betrachtet und stattdessen die Domänennamen entweder über den -d
Parameter oder im interaktiven Modus angeben muss.
Wenn ich "certbot erneuern" ausführe, werden alle automatisch erneuert, ohne mein Skript zu verwenden?
TL; DR: Ja, das sollte es.
Schauen wir uns die Dokumentation von certbot an :
Ab Version 0.10.0 unterstützt Certbot eine Erneuerungsaktion, um alle installierten Zertifikate auf bevorstehenden Ablauf zu überprüfen und zu versuchen, sie zu erneuern. Die einfachste Form ist einfach
certbot erneuern
So weit, ist es gut.
Dieser Befehl versucht, zuvor erhaltene Zertifikate zu erneuern, die in weniger als 30 Tagen ablaufen.
Dies sollte Ihre Frage beantworten. Achtung: Ich weiß nicht, wie gut certbot
ich mit Situationen umgehen kann, in denen Sie die Zertifikate in verschiedene Verzeichnisse verschieben.
Später im selben Absatz:
Für den Erneuerungsversuch werden dieselben Plugins und Optionen verwendet, die zum Zeitpunkt der ursprünglichen Ausstellung des Zertifikats verwendet wurden, sofern Sie keine anderen Plugins oder Optionen angeben. Im Gegensatz zu certonly
, renew
wirkt auf mehreren Zertifikaten und berücksichtigt immer , ob jeder in der Nähe Ablauf ist.
Also ja; certbot
sollten alle Ihre Zertifikate ohne die Hilfe Ihres Skripts erneuern.
Wie erstelle ich tatsächlich ein neues Zertifikat mit der DNS-Herausforderung?
Was ist los mit dem Befehl, den Sie zu Beginn Ihres Beitrags gepostet haben?
certbot -d example.com --manual --preferred-challenges dns certonly
erwirbt ein Zertifikat für example.com mithilfe der DNS-Herausforderung.
Die Schritte zum Erstellen eines Zertifikats sind:
- Führen Sie den von
certbot
Ihnen geposteten Befehl aus
- Warten Sie, bis der Befehl einen DNS-TXT-Eintrag anzeigt
- Erstellen Sie diesen TXT-Datensatz
- Setzen Sie den
certbot
Befehl fort
- Holen Sie sich ein Zertifikat für die angegebene Domain
- Löschen Sie den TXT-Datensatz (da Sie ihn nur für die Erstellung und einen neuen für die Erneuerung benötigen).
Wenn Sie diesen vollständigen Prozess automatisieren möchten, sollten Sie sich ein Tool wie lego ansehen, das einige DNS-Anbieter unterstützt .