Let's Encrypt will nicht

Hallo,

ich komme mir mal wieder wie ein EDV-Analphabet vor, da ich auf meinem neu gemieteten VPS Let’s Encrypt nicht zum Laufen kriege.

Wie an anderen Server, bei denen eine oder mehrere Subdomains beim Domainprovider einen A Record auf die IP des Servers haben, habe ich Let’s Encrypt mit Dehydrated eingerichtet und einen A Record für eine Subdomain auf die IP des VPN eingerichtet.
Ping auf die Subdomain liefert die IP des VPS.

Am VPN ist Apache installiert und läuft.

Beim Versuch, das Zertifikat zu erstellen, bekomme ich aber Fehlermeldungen:

” + Hook: Nothing to do…”
 + Challenge validation has failed :(
ERROR: Challenge is invalid! (returned: invalid) (result: ["type"]	"http-01"
["status"]	"invalid"
["error","type"]	"urn:ietf:params:acme:error:unauthorized"
["error","detail"]	"89.58.15.58: Invalid response from http://friendica.crazy-to-bike.de/.well-known/acme-challenge/kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc: 403"
["error","status"]	403
["error"]	{"type":"urn:ietf:params:acme:error:unauthorized","detail":"89.58.15.58: Invalid response from http://friendica.crazy-to-bike.de/.well-known/acme-challenge/kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc: 403","status":403}
["url"]	"https://acme-v02.api.letsencrypt.org/acme/chall-v3/280592866666/NPkOBQ"
["token"]	"kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc"
["validationRecord",0,"url"]	"http://friendica.crazy-to-bike.de/.well-known/acme-challenge/kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc"
["validationRecord",0,"hostname"]	"friendica.crazy-to-bike.de"
["validationRecord",0,"port"]	"80"
["validationRecord",0,"addressesResolved",0]	"89.58.15.58"
["validationRecord",0,"addressesResolved"]	["89.58.15.58"]
["validationRecord",0,"addressUsed"]	"89.58.15.58"
["validationRecord",0]	{"url":"http://friendica.crazy-to-bike.de/.well-known/acme-challenge/kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc","hostname":"friendica.crazy-to-bike.de","port":"80","addressesResolved":["89.58.15.58"],"addressUsed":"89.58.15.58"}
["validationRecord"]	[{"url":"http://friendica.crazy-to-bike.de/.well-known/acme-challenge/kbIkr5-HzAOU9cCLNsJbgBnA0VU68f2P0hyBXkjBWkc","hostname":"friendica.crazy-to-bike.de","port":"80","addressesResolved":["89.58.15.58"],"addressUsed":"89.58.15.58"}]
["validated"]	"2023-11-04T19:08:47Z")
” + Hook: Nothing to do…”

Ich finde den Fehler oder das Problem einfach nicht :see_no_evil:
Hat jemand eine Idee, wo ich suchen muss?

Viele Grüße
Steffen

Hallo Steffen,

dehydrated, steht in der Meldung, versucht die Validierung per http zu
machen. Ist den http (also Port 80) in der Firewall auf?

Versuch mal den apache2 an zu halten und mach dann die Validierung.

LG

Holger

Hallo Holger,

ja, der Port ist auf, da ich noch gar keine Firewall installiert habe.

Imho kann das, wenn der Apache nicht läuft erst Recht nicht klappen. Hab’s trotzdem (erfolglos) versucht.

Viele Grüße
Steffen

Hallo Steffen,

in der Meldung steht ja der Grund, warum es nicht geht: http Code 403.
Und 403 bedeutet: der Zugriff ist blockiert

Versuch doch mal selbst von außen die validierungsurl zu erreichen: das
ist das lange Ding mit dem .well-known… mitten drin.

Und wegen apache: ich habe einen Server, da muss ich erstmal apache
anhalten, damit das validieren klappt.

LG

Holger

Hallo Holger,

webgo Webspace-Admin liefert wenn Apache läuft

Forbidden

You don’t have permission to access this resource.


Apache/2.4.52 (Ubuntu) Server at friendica.crazy-to-bike.de Port 80

wenn er nicht läuft

Die Website ist nicht erreichbar

friendica.crazy-to-bike.de hat die Verbindung abgelehnt.

Wobei das acme-challenge Verzeichnis auf dem Server ja eh leer ist, wenn Dehydrated nicht gerade läuft.

Auf dem Schulserver mit Nextcloud und Co muss ich den Apache auch nicht stoppen, damit die Zertikate erneuert werden können :man_shrugging:

Viele Grüße
Steffen

Let’s Encrypt bietet ja mehrere Moeglichkeiten der Validierung, Apache-Plugin, eigener Python-Webserver auf Port 80 und noch irgendwas, hab ich vergessen, DNS-TXT-Record oder sowas vielleicht.

Hallo Harry,

ja, aber was auf Server A geht, sollte doch auch auf Server B gehen, zumal da ja noch gar nichts „verkonfiguriert“ ist :man_shrugging:

Viele Grüße
Steffen

Hallo Steffen,

apache liefert die Seite nicht aus, weil es keine site dafür hat.
Schau deine sites-enabled Dateien an: da muss das drin stehen.

LG

Holger

Weiss nicht was ihr da fuer ein Geschiss macht, Let’s encrypt ist bei mir auf einem neuen Server ein Zweizeiler:


apt install python3-certbot-apache
certbot --apache

Gruss Harry

Edith: Da hat sich ja fefe schon 2015 drueber aufgeregt, vor allem dass damit jetzt jeder Trottel Zertifikate nutzen kann: Fefes Blog

Hallo Holger,

die Subdomain habe ich bis das Problem gelöst ist nochmal im DNS zurück gebogen, damit meine Friendica-Instanz wieder läuft, sobald die Änderung im DNS greift.

derzeit zeigt nur vserver.crazy-to-bike.de auf den VPS und das liefert mit http:// „It Works“.

https:// ist derzeit in der Apache-Config auskommentiert, da der Apache nicht startet, wenn er keine Zertifikate findet.

Irgendwie beißt sich gerade die Katze in den Schwanz und ich kann mich nicht erinnern, dass das beim Schulserver so ein Problem war :man_shrugging:

Viele Grüße
Steffen

Hallo Harry,

ich hatte das eben bisher mit Dehydrated realisiert und dachte, ich mach es wieder so (hat ja immer problemlos funktioniert).

Habe jetzt doch Cerbot getestet und das funktionert.

Aber wo werden die Zertifikate bei Certbot gespeichert?
Die Suchmaschine meines Vertrauens liefert keine Anleitung, in der das erwähnt wird.

Edit:
Ah, die Zeilen werden von Cerbot gleich in die vhost-Config eingetragen.

Viele Grüße
Steffen

Hallo Steffen,

bei mir sieht es so aus, als hättest Du für http://friendica.crazy-to-bike.de eine Weiterleitung auf https aktiv. Das kann nicht funktionieren. Du musst erst mal den Apache auf Port 80 lauschen lassen (ohne https), damit die ersten Zertifikate erstellt werden können.

Wenn Du erst mal ein gültiges Zertifikat hast, dann kannst Du die Weiterleitung auf https wieder aktivieren, das klappt dann auch bei zukünftigen Zertifikat-Challenges.

Bevor Dein Server nicht eine ganz normale Webseite auf Port 80 ausliefert, brauchst Du Dehydrated gar nicht erst zu versuchen.

@irrlicht: Dehydrated ist genauso einfach und hat aus meiner Sicht den Vorteil, dass es viel schlanker ist (z. B. kein eigenes Python zieht). Und das letzte Mal, als ich es verglichen hatte, fand ich die Hook-Skripte mächtiger und einfacher. Ist aber auch schon wieder ein paar Jahre her.

Beste Grüße

Jörg

Morgen,

Ich mag einfache Loesungen und certbot ist so eine.

Ja, certbot macht das alles, inklusive der Apache bzw. nginx-Konfiguration mitsamt dem ganzen Einbinden der Zertifikate. Ich hab auch keine Lust mehr mich mit solchen Sachen rumzuaergern, frueher (war ja alles besser) hab ich das sportlich gesehen, mittlerweile gibt es soviel Neues, dass ich Standarddinge wenn moeglich von fertigen Skripten erledigen lasse.

Zur Vollstaendigkeit: die Zertifikate liegen in /etc/letsencrypt/live , was nur die halbe Wahrheit ist, denn dort liegen die Links nach /etc/letsencrypt/archive und dort werden die letzten auch noch aufbewahrt. Muss man nicht unbedingt verstehen, kann man aber.

Gruss Harry

Ich hab mittlerweile für alle Domains wildcard-Zertifikate, die ich zentral von DNSroboCert in einem Docker-Container erzeugen lasse und dann selber verteile. Setzt einen DNS-API-Key voraus, was bei vielen großen ja kein Problem darstellt, so auch mit dem großen H aus Bayern.
Anfangs hat mich gestört, dass ich bei der Methode selbst für die Neustarts der Dienste sorgen muss. Die Sorge hat sich allerdings verflüchtigt.
Es hat sich gezeigt, dass alles ausser meinem nginx nachts vor dem Backup kurz runtergefahren wird und der nginx häufig genug beim Serverneustart nach Updates mit neu gestartet wird, so dass mir noch gar nie ein Zertifikat an die Gültigkeitsgrenze kam.
Das Monitoring würde mich ohnehin 2 Wochen vorher warnen… was aber wie gesagt für MEINE Zertifikate noch nie passiert ist.

LG Jesko

Hallo Jesko,

Bei mir ist fast genauso:

  • DNS API Key beim Registrar um die Einträge „on-the-fly“ zu ändern,
  • Certbot mit DNS-Challenge,
  • Prehook in Certbot legt den DNS Eintrag ein vor dem Challenge, und Posthook putzt es danach aus,
  • ein mal pro Woche sind die verschiedene Dienste per Cronjob neugestartet, es reicht aus.

Funktioniert seit Jahren so …

Gruß

Arnaud