Letsencrypt: Create domain key error

Started by Kruemel, March 18, 2018, 11:59:12 AM

Previous topic - Next topic
March 18, 2018, 11:59:12 AM Last Edit: March 18, 2018, 12:33:19 PM by Kruemel
Moin,

ich versuche seit einiger Zeit, meinen HAProxy mit Zertifikaten von Letsencrypt auszustatten, um HTTPS nutzen zu können. Leider klappt das nicht.

Ich betreibe die Sense an einem IP Anschluss mit dynamischer IP und benutze sowohl selfhost.bz als auch duckdns.org als DDNS Provider. Bei einer meiner Domain habe ich CNAME Einträge auf diese DDNS Provider gesetzt, so dass z.B. meine.domain.de auf die DDNS Einträge gehen. Funktioniert soweit. Ich kann auch mit DNS Validation ein Zertifikat für DucksDNS beziehen, geht auch.

Nun möchte ich aber Zertifikate für meine CNAME Eintröge erstellen lassen, DNS Validation scheidet aus. Ich muss also den HTTP Weg benutzen.

Beim generiieren bekomme ich aber immer die Meldung:
The domain key is here: /var/etc/acme-client/home/hmeine.domain.de/meine.domain.de.key
[Sun Mar 18 11:52:26 CET 2018] Create domain key error.

Der domain key liegt auch in diesem Pfad und enthält auch einen Schlüssel.
Ich habe den HAProxy so konfiguriert, dass die ACME Challenge erreichbar sein sollte. Wenn ich also http://meine.domain.de/.well-known/acme-challenge/ aufrufe, erhalte ich einen 403. Vermutlich, weil ich eben den Verzeichniscontent nicht browsen darf und nicht genau weiß, welche URL ich genau aufrufen müßte um zu prüfen, ob die Validation sie auch richtig erreichen kann.

Ansonsten keine Fehler.
Kann mir mal jemand nen Schubser in die richtige Richtung geben?!?

Danke und Gruß
Krümel

March 18, 2018, 12:46:32 PM #1 Last Edit: March 18, 2018, 01:09:13 PM by Kruemel
Ich glaub ich hab gerade selber was gefunden:

Quote[Sun Mar 18 12:38:47 CET 2018] response='{"type":"http-01","status":"invalid","error":{"type":"urn:acme:error:unauthorized","detail":"Invalid response from http://meine.domain.de/.well-known/acme-challenge/ppjFd0vr-MwcahFoTEbJhawYiXGN4i9Jj1pOTijIOMU: \"\u003c!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"\u003e\n\u003chtml\u003e\u003chead\u003e\n\u003ctitle\u003e404 Not Found\u003c/title\u003e\n\u003c/head\u003e\u003cbody\u003e\n\u003ch1\u003eNot Found\u003c/h1\u003e\n\u003cp\"","status": 403},"uri":"https://acme-staging.api.letsencrypt.org/acme/challenge/6K60wF-LYUSf1iYhgd1iTJgfJzBPwwPHQR6a30nhPoI/110192612","token":"ppjFd0vr-MwcahFoTEbJhawYiXGN4i9Jj1pOTijIOMU","keyAuthorization":"ppjFd0vr-MwcahFoTEbJhawYiXGN4i9Jj1pOTijIOMU.-pJRRwciIyO5NcsV7R7rzjuWEuy1j9lYc5lLpcH4Ygc","validationRecord":[{"url":"http://meine.domain.de/.well-known/acme-challenge/ppjFd0vr-MwcahFoTEbJhawYiXGN4i9Jj1pOTijIOMU","hostname":"meine.domain.de","port":"80","addressesResolved":["62.75.214.xxx"],"addressUsed":"62.75.214.xxx}'

Mir ist direkt aufgefallen, dass er die falsche IP auflöst, denn die hier genannte IP ist die des Servers, auf der die domain.de läuft. Der CNAME Eintrag jedoch geht auf die DDNS Adresse. Sieht für mich also erstmal so aus: Ätsch, geht nicht.

Das heißt, ich kann es mir abschminken, ein Wildcardzertifikat von Letsencrypt für meine Domains mit CNAME Eintrag zu bekommen? Oder gibts da einen Trick?

VG
Krümel

edit: Die Fehlermeldung besagt ja eigentlich, dass er die Challenge nicht finden kann (404 not found). Ich kann aber, wenn ich die die URL aus dem Log nehme und in den Browser stecke, aufrufen. Der Download startet bei mir. Nun verstehe ich nicht, wieso das während der Validierung nicht klappt. Liegt es wirklich daran, dass Letsencrypt die CNAME Einträge nicht akzeptiert und die Server URL von domain.de aufruft?

> Mir ist direkt aufgefallen, dass er die falsche IP auflöst, denn die hier genannte IP ist die des Servers, auf der die domain.de läuft. Der CNAME Eintrag jedoch geht auf die DDNS Adresse. Sieht für mich also erstmal so aus: Ätsch, geht nicht.

Das versteht jetzt niemand so richtig. Wie ist denn jetzt "meine.domein.de" im öffentlichen DNS eingetragen. Mit einem A? CNAME? Wieauchimmer?

LE macht einen DNS Aufruf. Wenn das ein valider CNAME ist wird auch der CNAME aufgelöst und fertig. Wenn die IP in deinem Log nicht stimmt, dann bekommt LE beim DNS diese IP zurück und ich würde überlegen und suchen, warum und wo das definiert ist. Das hat mit CNAME geht nicht oder DDNS erstmal primär nichts zu tun :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Quote from: JeGr on March 20, 2018, 10:14:16 AM
Das hat mit CNAME geht nicht oder DDNS erstmal primär nichts zu tun :)

Das sehe ich nun etwas anders. Mein selfhost,bz Provider funktioniert nicht. Dasselbe Setup mit duckdns funktioniert hingegen.

Hat also sehr wohl etwas mit DDNS zu tun. Selfhost scheint mit Letsencrypt, warum auch immer, nicht zu funktionierten. Ich konnte jedenfalls den CNAME Eintrag, der auf selfhost verwies, richtig auflösen, LE nicht. Der Verweis auf duckdns wird nun von LE richtig aufgelöst.

Warum das mit dem einen nicht und mit dem anderen geht, kann ich hier nicht beurteilen, hab bei beiden ja keinen Account. Faktisch werden aber beide es mit CNAME Einträgen lösen und die sind bei LE auch nicht das Problem. Das sollte damit ausgedrückt sein, dass es an DNS und dynamischem DNS per se nicht liegt. :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

October 10, 2018, 04:29:13 AM #5 Last Edit: October 10, 2018, 04:46:41 AM by maweber
Ich habe das selbe(?) Problem.

- DNS Challenge (nsupdate)
- manual/force Update

Aber:
- Beim ersten Mal erscheint obiger Fehler.
- Beim zweiten Mal gehts durch.

Scheint als ob er beim ersten Mal erst den key vermisst, dann generiert (oder in diesen Ordner reinkopiert), beim zweiten Mal erst anwendet. Also "expected behaviour" weil manueller Vorgang? Jedes Mal einen neuen Key erzeugen sollte aber eigentlich nicht sein?

Zitat aus acme log (Erster Durchgang):
...
Read key length:
Creating domain key
Using config home:/var/etc/acme-client/home
...



Zitat aus acme log (Zweiter Durchgang):
...
Read key length:4096
_createcsr
...



EDIT:
Ich glaube MEIN Problem war:
Mein /var läuft im RAM. Alle acme Keys sind weg nach einem reboot.
Logisch mussten also alle keys (pseudo rekonstruierbar) zuerst erneuert werden.

https://github.com/opnsense/plugins/issues/884

Sollte in 18.7.5 erledigt sein.


Grüsse
Franco

February 07, 2019, 01:35:30 PM #8 Last Edit: February 07, 2019, 01:51:07 PM by kaiserlich
Hi,

ist das noch immer ein Problem?
HAProxy -> LE integration. Auch mein System verwendet für /var den RAM. Das Key File liegt im Pfad/ist vorhanden. Meldet aber "Create domain key error."

E: hat sich erledigt, hab den Account neu angelegen müssen da die E-Mail schon auf einen anderen Host verwendet wurde, nicht bedacht. Das hat ihn dann wohl außer tritt gebracht da ich nur die E-Mail angepasst habe. Das hat er nicht gefressen, erst wie ich den Account gelöscht habe und neu angelegt habe ging es weiter.

Aktuell habe ich aber das Problem von Env->Produktion

[Thu Feb  7 13:46:00 CET 2019] ACME_DIRECTORY='https://acme-v01.api.letsencrypt.org/directory'
[Thu Feb  7 13:46:00 CET 2019] DOMAIN_PATH='/var/etc/acme-client/home/XXX'
[Thu Feb  7 13:46:00 CET 2019] Using ACME_DIRECTORY: https://acme-v01.api.letsencrypt.org/directory
[Thu Feb  7 13:46:00 CET 2019] _init api for server: https://acme-v01.api.letsencrypt.org/directory
[Thu Feb  7 13:46:00 CET 2019] GET
[Thu Feb  7 13:46:00 CET 2019] url='https://acme-v01.api.letsencrypt.org/directory'
[Thu Feb  7 13:46:00 CET 2019] timeout=
[Thu Feb  7 13:46:00 CET 2019] _CURL='curl -L --silent --dump-header /var/etc/acme-client/home/http.header  -g '
[Thu Feb  7 13:46:00 CET 2019] ret='0'
[Thu Feb  7 13:46:00 CET 2019] ACME_KEY_CHANGE='https://acme-v01.api.letsencrypt.org/acme/key-change'
[Thu Feb  7 13:46:00 CET 2019] ACME_NEW_AUTHZ='https://acme-v01.api.letsencrypt.org/acme/new-authz'
[Thu Feb  7 13:46:00 CET 2019] ACME_NEW_ORDER='https://acme-v01.api.letsencrypt.org/acme/new-cert'
[Thu Feb  7 13:46:00 CET 2019] ACME_NEW_ACCOUNT='https://acme-v01.api.letsencrypt.org/acme/new-reg'
[Thu Feb  7 13:46:00 CET 2019] ACME_REVOKE_CERT='https://acme-v01.api.letsencrypt.org/acme/revoke-cert'
[Thu Feb  7 13:46:00 CET 2019] ACME_AGREEMENT='https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf'
[Thu Feb  7 13:46:00 CET 2019] ACME_NEW_NONCE
[Thu Feb  7 13:46:00 CET 2019] ACME_VERSION
[Thu Feb  7 13:46:00 CET 2019] Le_NextRenewTime='1554640665'
[Thu Feb  7 13:46:00 CET 2019] _saved_domain='XXXX'
[Thu Feb  7 13:46:00 CET 2019] _saved_alt='no'
[Thu Feb  7 13:46:00 CET 2019] Domains not changed.
[Thu Feb  7 13:46:00 CET 2019] Skip, Next renewal time is: Mon Apr  8 12:37:45 UTC 2019
[Thu Feb  7 13:46:00 CET 2019] Add '--force' to force to renew.

[Thu Feb  7 15:46:17 CET 2019] Le_NextRenewTime='1554640665'
[Thu Feb  7 15:46:17 CET 2019] _saved_domain='XXXX'
[Thu Feb  7 15:46:17 CET 2019] _saved_alt='no'
[Thu Feb  7 15:46:17 CET 2019] Domains not changed.
[Thu Feb  7 15:46:17 CET 2019] Skip, Next renewal time is: Mon Apr  8 12:37:45 UTC 2019
[Thu Feb  7 15:46:17 CET 2019] Add '--force' to force to renew.

Jemand ne Idee wie ich das forcen kan?