Let’s Encrypt Zertificat abgelaufen, was tun?

  • Hallo, da ich den Webserver auf meinem PI online zur Verfügung stelle, hatte mir vor ca 2 Jahren ein Let’s Encrypt Zertifikat auf meinem Raspi für eine registrierte Domain erstellt. Letztes Jahr bekam ich dann Emails, dass dieses Zertifikat demnächst ausläuft. Aus Gründen hatte ich damals keine Zeit mich darum zu kümmern und das Zertifikat verfiel kurz darauf. Allerdings habe ich den PI jetzt vor kurzem erst wieder in Betrieb genommen und daher auch den Webserver bis jetzt nicht genutzt. Jetzt läuft wieder soweit alles, auch der Zugriff auf den Webserver, allerdings natürlich nicht über https


    Jetzt wäre die Frage, wie ich da nun wieder ein neues Zertifikat erstelle, da auf dem PI ja immernoch das alte eingerichtet ist? Wenn ich jetzt wie beim erstmaligen Einrichten

    Code
    sudo certbot --apache

    eingebe, dann wird erstmal angezeigt, dass meine Domain noch gespeichert ist und es wird versucht ein neues Zertifikat zu erstellen (oder das alte zu erneuern?) aber es bricht dann mit einer Fehlermeldung ab (Domainnamen wurde hier abgeändert):

    Zur Fehlervermeidung habe ich jetzt vorübergehend DynDNS im Router deaktiviert und die DNS-Server Einstellungen (zwecks PI-Hole) wieder auf Standard gesetzt.

  • Die dort angegebene URL (http://domain.de/.well-known/acme-challenge/uG[...]TdnE) muss von *aussen* erreichbar sein, damit die von Let's Encrypt nachprüfen können ob derjenige der das Zertifikat haben möchte, auch den Server der über die Domain erreicht wird, unter seiner Kontrolle hat.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Die dort angegebene URL (http://domain.de/.well-known/acme-challenge/uG[...]TdnE) muss von *aussen* erreichbar sein, damit die von Let's Encrypt nachprüfen können ob derjenige der das Zertifikat haben möchte, auch den Server der über die Domain erreicht wird, unter seiner Kontrolle hat.

    Stimmt wenn ich im Browser die Adresse aufrufe, bekomme ich folgenden Fehler zurück:

    Code
    Forbidden
    
    You don't have permission to access this resource.
    Apache/2.4.38 (Raspbian) Server at domain.de Port 443

    Irgend eine Einstellung in Apache die das verhindert? Achja, DynDNS ist im Router deaktiviert, eigentlich sollte Apache bzw. der RasPi gar mehr online erreichbar sein. :denker:


    Bei einer Neuregistrierung muss der Port 80 offen sein.

    Sollte er sein, ich habe im Router die Ports 80 und 443 zum RasPi offen.

  • Der Apache blockiert trotzdem den Port, auch wenn DynDNS aus ist.


    Schalte doch zum Erneuern des Zertis den Apachen kurz aus.


    Ich habe bei mir bei einem Pi die automatische Verlängerung aktiviert.

    Soweit ich die Routine von LetsEncrypt verstanden habe, macht die das selbstständig (wenn richtig konfiguriert) und aktiviert diesen danach wieder.

    Da der Apache mit dem neuen Zertifikat eh neu gestartet/aktualisiert werden muss, passt das.


    Nachtrag:
    Ach so, bei Rechteproblemen kann es auch sein, dass Du "sudo" davor vergessen hast, wenn Du nicht als Root arbeitest.

    ;) Gruß Outi :D
    PIs: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Tests) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite)
    2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (noch ohne) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (Ubuntu Server 64 Bit) / Pi 400 (Bullseye) / 2x Pi Pico
    Platinen: Sense HAT / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT

  • Ich hab alles mögliche probiert mit und ohne Apache, inzwischen wurde ich für eine Woche bei letsencrypt gesperrt wegen zu vielen Versuchen. Und ja, wurde alles mit root-Rechten gemacht, daran kann es nicht liegen.


    Bis ich es wieder weiter probieren kann, könnten ja zunächst mal ein paar grundsätzliche Verständnisfragen geklärt werden (falls jemand genaueres weiß) um die Anzahl der Versuche zu minimieren:

    Ist für das Einrichten des Zertifikats egal, ob DynDNS für die Domain eingerichtet und aktiviert ist?

    Ist es egal ob Apache währenddessen läuft, schließlich starte ich das Einrichten des Zertifikats mit

    Code
    sudo certbot --apache

    ?

  • Du könntest einfach den Webserver stopppen, certbot renew und dann den Webserver wieder starten.


    Code
    systemctl stop apache2
    certbot renew
    systemctl start apache2


    Welche Dienste welche Ports belegen, kannst du z.B. mit netstat nachsehen:

    Code
    netstat -tlpen


    PS: sudo lasse ich meistens mit Absicht weg, da der Anwender selbst denken soll.

  • Hast du eine index.html in deinem Webverzeichnis? Die kann auch leer sein. Ansonsten gibt der Server auf der Domain einen Fehler zurück, der die Zertifizierung abbrechen lässt.

    Ja, bei mir ist das Webverzeichnis anscheinend: /var/www/html und dort befindet sich eine index.html


    Du könntest einfach den Webserver stopppen, certbot renew und dann den Webserver wieder starten.

    Ok, so werde ichs gleich probieren, sobald meine Domain wieder freigeschaltet ist.


    Quote

    Welche Dienste welche Ports belegen, kannst du z.B. mit netstat nachsehen:

    Code
    netstat -tlpen

    Sorry wenn ich so dumm fragen muss, aber was genau möchte ich damit rausfinden? Ob Apache die 80 belegt oder was muss gegeben sein, damit es mit dem Zertifizieren klappt?

  • Wenn du certbot renew nutzt, startet certbot einen eigenen Webserver auf dem Port 80, was nur dann geht, wenn der Port auch frei ist.

    netstat zeigt alle Sockets an, auch den Port 80, sofern ein Prozess (Apache2/Nginx) diesen Port belegt.

    Bevor du certbot renew startest, muss der Port 80 frei sein.

  • Ist für das Einrichten des Zertifikats egal, ob DynDNS für die Domain eingerichtet und aktiviert ist?

    Der Server muss vom Internet erreichbar sein.

    Siehe auch die Fehlermeldung oben:


    Quote


    Failed authorization procedure. domain.de (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://domain.de/.well-known/acme-challenge/uGuG[...]TdnE: Timeout during connect (likely firewall problem)


    Den Pfad http://domain.de/.well-known/acme-challenge/uGuG[...]TdnE musst du von außen erreichen können.


    Ich habe ein Script am laufen was den Apachen stopped, das Cert aktualisiert und den Apachen wieder startet.

    Wobei ich ein Wildcard Zertifikat habe und den TXT Record im DNS ändern muss.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Der_Imperator Verständnisfrage:

    Ich habe ein Script am laufen was den Apachen stopped, das Cert aktualisiert und den Apachen wieder startet.

    Wobei ich ein Wildcard Zertifikat habe und den TXT Record im DNS ändern muss.

    Wieso musst du den apache stoppen, um das Zertifikat zu aktualisieren wenn du das über einen TXT-Record machst.

    (Oder kann der certbot das nicht anders?)

    Wer nicht gekennzeichnete Rechtschreibfehler findet darf sie gerne behalten..

  • Man kann Plugins nutzen, die den TXT-Record beim Nameserver automatisch anlegen.

    Daneben hat man noch die Möglichkeit das manuell zu machen: https://certbot.eff.org/docs/using.html#manual

    Code
    certbot certonly --manual --preferred-challange dns

    Da kann man dann auch wählen, ob man die Validierung via HTTP oder DNS möchte.

    Nur den TXT-Record muss man dann selbst aktualisieren.


    Quote

    When using the dns challenge, certbot will ask you to place a TXT DNS
    record with specific contents under the domain name consisting of the hostname
    for which you want a certificate issued, prepended by _acme-challenge.


    Wenn man das über DNS macht, braucht man keinen Webserver, d.h. man muss den Webserver weder herunterfahren, noch muss man dort den Challange platzieren.

  • Bei einer Neuregistrierung muss der Port 80 offen sein.

    Ich durfte heute feststellen, dass auch bei einer manuellen Erneuerung Port 80 zum Raspi offen sein muss. Im zweiten Versuch hat es dann geklappt.


    Zottel


    sudo certbot renew

    Hat bei mir heute ausgereicht, allerdings gibt es auch keinen pihole und Port 80 musste auch zum Raspi zeigen. Anschließend habe ich Port 80 wieder zugemacht.

  • Vielen Dank erstmal an alle, ich werde alles angesprochene umsetzten, sobald meine Domain bei letsencrypt wieder freigeschaltet wurde.

    Kann es sein, dass du ein wildcard-Zerztifikat in Auftrag gibst? Da müsstest du noch prüfen, wie die DNS-Einstellungen im txt-Record sind.

    Ich kann ehrlich gesagt nicht sonderlich viel mit der Frage anfangen, lediglich dass zu "txt-Record" etwas auf der Seite meines Domainproviders steht, ist es das? Dort ist aber nicht viel eingestellt, nur "keine SPF-Regel"

  • Hallo,


    zwar benutze ich nicht Apache, sondern NGINX und verwende auch nicht den certbot sondern direkt ACME über acme.sh von NeilPang, aber da ich ein ähnliches Problem habe bzw. hatte, vielleicht als Anmerkung:

    Port 80 muss nicht nur im Router, sondern auch in der Config-Datei (/etc/nginx/sites-available/meineseite.conf) freigegeben sein und nicht über eine Umleitung (return 301... ) woanders hin verweisen.

    Wieweit das auf Apache und die dazugehörigen Config-Dateien zutrifft kann ich nicht sagen, da ich nie mit Apache gearbeitet habe.


    Gruss


    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Der_Imperator Verständnisfrage:

    Wieso musst du den apache stoppen, um das Zertifikat zu aktualisieren wenn du das über einen TXT-Record machst.

    (Oder kann der certbot das nicht anders?)


    Ich starte den Apachen neu um sicherzustellen das auch das neue Zertifikat eingelesen wird.

    Ein reload statt restart würde wahscheinlich auch reichen.

    Das mit dem DNS mache ich aus zwei Gründen :

    1. ich habe ein Wildcard Zertifikat

    2. Ich habe nur Port 443 offen im Internet, Port 80 ist zu.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.