Froschs Blog

Computer und was das Leben sonst noch so zu bieten hat

Zur Website | Impressum

Wenn Let’s Encrypt nicht erneuern will …

23. April 2021 um 17:28 Uhr von Atari-Frosch

Ich habe das jetzt schon ein paarmal beobachtet: Let's Encrypt, hier „vertreten“ durch den Certbot, meldet immer mal wieder für die eine oder andere (Sub-)Domain, daß eine Erneuerung des Zertifikats nicht möglich sei, weil die Bots, die die Challenge überprüfen, in einen Timeout gelaufen seien. Die Standard-Vermutung ist, sie seien in die Firewall geraten. Das passierte bisher sowohl hier auf meinem eigenen Server als auch auf dem Server eines Vereins, den ich administriere.

Und jedesmal überprüfte ich die vier IP-Adressen, mit denen Let's Encrypt zugreifen wollte, und sie standen natürlich nicht in der Firewall. fail2ban wußte jeweils auch nix davon.

Das Problem löst sich manchmal von selbst, indem Let's Encrypt dann doch irgendwann nach Tagen oder Wochen die Erneuerung durchführt, als wäre nichts gewesen. Aber manchmal will es gar nicht funktionieren, dann muß man etwas nachhelfen – so wie ich heute bei einer Subdomain, bei der sich der Certbot bereits seit 40 Tagen vergeblich um eine Erneuerung bemühte.

Die Lösung ist … unkonventionell und vom Typ „muß ich nicht verstehen, oder?“. So geht's:

  1. Zwangsumleitung auf https auskommentieren.
  2. Alle (!) location blocks aus dem Konfigurationsteil für Port 443 in den für Port 80 kopieren.
  3. service nginx reload
  4. certbot renew laufen lassen
  5. Nach erfolgreicher Erneuerung die location blocks aus dem Konfigurationsteil für Port 80 rauslöschen, Zwangsumleitung wieder aktivieren.
  6. service nginx reload

Ob das auch mit apache2 auftritt und wie man es da lösen müßte, weiß ich nicht – ich hab keinen mehr laufen.

Den Anspruch, man müsse sich nach der ersten Installation des Zertifikats nie mehr drum kümmern, kann Let's Encrypt damit jedenfalls nicht (mehr) erfüllen. Ich mußte die Aktion in diesem Jahr bisher für drei Domains bzw. Subdomains durchführen, eine bei mir und zwei auf dem Vereinsserver (da ich noch nach dem alten Schema verfahre, hat jede Domain und jede Subdomain jeweils ihr ganz eigenes Zertifikat). Bei allen anderen Domains lief in der Zeit der Erneuerungsprozeß ohne Probleme beim ersten Mal durch.

Muß ich nicht verstehen, oder?


History

3 Kommentare zu “Wenn Let’s Encrypt nicht erneuern will …”

  1. Joachim quakte:

    Macht der Certbot denn kein https? Es bleibt doch nur die Umleitung auf HTTPS als Problem übrig. Kann man nicht in den location blocks für HTTP eine Sonderregel für den Bot definieren?

    Achtung: keine Erfahrungen mit nginx hier und Web-Server Administration ist sehr lange her. Ist nur ein Schuss ins Blaue.


  2. Joachim quakte:

    Nachtrag/Frage: du verwendest den Certbot offensichtlich im manuellem Mode. Ist das korrekt?


  3. Atari-Frosch quakte:

    @Joachim: Ich habe überall die Zwangsumleitung aktiv, wie es eigentlich üblich sein sollte. Und ja, man kann natürlich im Teil für Port 80 bereits den location block für LE eintragen, vor der Zwangsumleitung auf 443.

    Interessant ist, daß mir in „social media“ Leute genau Gegenteiliges sagten: Einer meinte, natürlich müsse der Block für LE bei Port 80 stehen, das ginge ja sonst gar nicht. – Ja seltsam, mein Certbot ist ja meistens anderer Meinung und tut’s einfach, nur eben nicht immer. 😉

    Ein anderer erklärte, natürlich könne LE Zwangsumleitungen folgen, das solle gar kein Problem sein. Ja, und in den meisten Fällen ist es bei mir ja auch kein Problem.

    BTW, grad letzte Nacht kam wieder eine Meldung. Wieder der Vereinsserver, diesmal eine andere Subdomain … was auch die Nachfrage beantworten dürfte: Der Certbot läuft für alle Domains auf dem jeweiligen Server als (nächtlicher) Cronjob. Manuell starte ich ihn nur, wenn’s mal wieder gar nicht geklappt hat. Ich warte jetzt mal ein paar Tage ab, ob er sich noch einkriegt, und dann muß ich wohl mal wieder selber ran.


Kommentieren

Bitte beachte die Kommentarregeln!

XHTML: Du kannst diese Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>