Wie erneuere ich ein letsencrypt.org-Zertifikat in einem Cron-Job?

1833
Karl Richter

Ich habe seit ein paar Tagen Probleme, mein letsencrypt.org-Zertifikat für meinen Webserver zu erneuern.

Die Dokumentation von letsencrypt Tools könnten gut oder schlecht sein - das ist unmöglich, weil zu sagen, dass es certbot, letsencrypt, certbot-auto, letsencrypt-auto,, /etc/certbotdie installiert werden kann oder aus dem Quellverzeichnis oder einem inexisting und verschiedene Unterbefehle ausführen, die alle irgendwie behaupten, die Arbeit zu erledigen und dann mit allen scheitern Eine nicht umfassende Ausgabe mit einer so schönen Variation des sich ständig drehenden Rades des Nonsens-Feedbacks:

  • Use of --agree-dev-preview is deprecated. Saving debug log to /var/log/letsencrypt/letsencrypt.logIm HEAD des Master-Zweigs von https://github.com/letsencrypt/letsencrypt - versenden Sie Skripts, die nicht funktionieren?
  • Failed authorization procedure. [hostname] (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://[hostname]/.well-known/acme-challenge/JwhGtVHZ7x6pfBztDgYL-IRQXfa1JLwhAn84Hrzi_xo: Error getting validation data - Kein Kommentar nötig
  • Der offizielle Leitfaden unter https://certbot.eff.org/#ubuntutzesty-apache für Ubuntu 17.04 und Apache2 schlägt wegen fehl

    Use of --agree-dev-preview is deprecated. Use of --agree-dev-preview is deprecated. Too many flags setting configurators/installers/authenticators 'webroot' -> 'apache' 

    Ich weiß nicht, ob es sinnvoll ist, dies zu verfolgen

https://community.letsencrypt.org/t/renew-all-certificate-using-cron/21162/6 versucht dies zu erklären, scheitert aber an allem, was nicht im SE-Format vorliegt. Die Informationen sind veraltet und alles, was gesagt wird, ist widersprüchlich.

Die Dokumentation man letsencryptist kaum brauchbar, zumindest nicht, wenn Sie verstehen wollen, was Sie tun - nicht zwingend, aber sehr hilfreich bei der Computerverwaltung - so heißt es beispielsweise By default, it will attempt to use a webserver both for obtaining and installing the cert- nicht wirklich sicher, wie ein Webserver die Schritte ausführen soll. ..

Ich verwende Ubuntu 17.04.

0
Ihre Frage liest sich wie ein Spruch. Ich würde versuchen, es ein wenig zu rationalisieren. Die Verwendung von "certbot" (aus dem PPA) sollte ausreichen. Rufen Sie einfach "certbot renew" an. Sie sollten anzeigen, welchen bestimmten Befehl Sie ausführen wollten und welche Fehlermeldung Ihnen angezeigt wurde. Warum ist in Bezug auf den zweiten Fehler, den Sie anzeigen, "kein Kommentar" erforderlich? Ist das nicht eine Untersuchung wert? Haben Sie sich verwandte Themen angeschaut? Und Sie sagen, dass Sie seit ein paar Tagen Probleme mit der Erneuerung haben. Hat dies schon einmal funktioniert? Was hat sich Ihrer Meinung nach geändert? slhck vor 7 Jahren 2

2 Antworten auf die Frage

0
xenoid

Mein eigener Server läuft mit

# Renew Let's Encrypt cert 0 5 * * * root /usr/bin/certbot renew --quiet 

(Dies ist der Ubuntu-Geschmack von Crontab). Scheint so weit zu arbeiten. Ich befolgte die Anweisungen unter https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04 und es war einfach.

Das einzige Problem dabei ist, dass wenn Sie einen Webserver auf Port 443 ausführen (und hey, Sie haben SSL-Zertifikate, warum nicht?), Müssen Sie den Webserver anhalten, certbot zum Erneuern aufrufen und den Webserver neu starten. Ich schreibe ein kleines Wrapper-Skript, das dies tut, und rufe das Skript dann von cron auf. ivanivan vor 7 Jahren 0
Nein, tun Sie nicht ... aus den Anweisungen oben: * Da wir unsere Zertifikate mit dem Plugin --apache installiert haben, wird Apache ebenfalls neu geladen, um sicherzustellen, dass die neuen Zertifikate verwendet werden. * xenoid vor 7 Jahren 0
Ich lasse nicht zu, dass sich letsencrypt oder irgendetwas anderes mit meiner Apache-Konfiguration vermischt ... nur Standalone. Ich wünschte nur, es könnte so eingerichtet werden, dass ein neuer Port für neue Zertifikate verwendet wird. Der Apache-Server muss also einfach neu geladen werden, anstatt anzuhalten. Natürlich ist mein Datenverkehr extrem niedrig, so dass das Stoppen des Webservers für 30 Sekunden keine große Sache ist. Es ist nur etwas für Leute, die sich dessen bewusst sind .... ivanivan vor 7 Jahren 0
Ich verstehe es nicht ganz ... Sie müssen Ihren Server nicht anhalten, um ein neues Zertifikat zu erhalten, da der Bot den Server dafür nicht verwendet. Sobald das Zertifikat erworben wurde, ist nur ein Apache-Reload erforderlich nimm es in rechnung. Ich sehe in meiner Apache-Konfiguration nichts geändert, um ein neues Zertifikat zu erhalten. xenoid vor 7 Jahren 0
Ich verwende die `certonly - standalone`-Optionen - also versucht er auf *: 443 zu hören. Was mit dem apache2-Server in Konflikt steht, was bedeutet, dass ich in meinem Anwendungsfall den apache2-Server stoppen, mein cert erneuern (oder ein neues bekommen) und den Apache neu starten muss. ivanivan vor 7 Jahren 0
0
Karl Richter

And the secret is: one needs to configure Apache (e.g. in /etc/apache2/apache2.conf) to allow reading the directory by adding

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/ <Directory "/var/www/html/.well-known/acme-challenge/"> Options None AllowOverride None ForceType text/plain RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]$)" </Directory> 

(from https://community.letsencrypt.org/t/apache-multidomain-webroot/10663/2).

I'm not really sure why this script is associated with automation if I have to figure out all these secrets manually - this issue could have been resolved automatically or at least be pointed out by a helpful error message.