Lets Encrypt Wildcard Zertifikat (ACME v2)

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Bin noch am Handy und konnte es noch nicht testen, aber eine Frage schon mal, weil du es gerade erwähnt hast. Hast du im Skript oder einem anderen was gebaut um den TXT-Rekord zu extrahieren oder ließt du es auch immer in der Console ab?

Ich versuche es später mal durchlaufen zu lassen. Bin schon gespannt. Bin aber sicher noch gesperrt ;).

Viele Grüße
Seger
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Bisher habe ich das nur in der Konsole ausgeben lassen.
Im Aufgabenplaner müsstest du es halt in eine Datei umleiten lassen
Rich (BBCode):
/Pfad/zum/skript.sh create > /Pfad/zum/log.txt

Infos zu den Limits findest du hier: https://letsencrypt.org/de/docs/rate-limits/
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Ja, ist es.



Es gibt nach meiner Beobachtung mindestens zwei Verzeichnisse für Zertifikate: "/usr/local/etc/certificate/" und "/usr/syno/etc/certificate/"
Es muss also in verschiedenen Verzeichnissen nach dem korrekten Pfad gesucht werden.
Ich habe diesen Ansatz jetzt mal in ein Skript gegossen (alles geschieht auf der DS). Ich hatte damit begonnen, bevor ich euren Thread hier gesehen hatte.
acme.sh installiere ich nicht, sondern rufe es live auf (ich weiß sonst nicht, ob es mit der DSM-eigenen LE-Integration korreliert).

Die Kopierfunktion ersetzt das DSM-Standardzertifikat sowie dieses Zertifikat für alle Anwendungen, die dafür in der INFO konfiguriert wurden. Außerdem wird zur Sicherheit ein Backup der alten Verzeichnisse erstellt und die Rechte und Besitzer der alten Zertifikatsdateien auf die neuen übertragen.

Da das Skript zu lang wurde, hier als Datei: Anhang anzeigen 52793

Hey mein Lieber, ich fange jetzt mal an mich deinem Skript zu widmen.
Kannst du uns vielleicht auch einmal deine "LE_wildcard.sh create" Datei zur Verfügung stellen?
/volume1/homes/admin/script/LE_wildcard.sh create

Will jetzt nicht gleich wieder einen Stockfehler machen. Und wieder eine blöde Frage, was heißt ich muss es mit dem Parameter create ausführen:
Rich (BBCode):
"/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/WildCard Zertifikat.sh" create
Wäre das so richtig?
1.JPG

Edit: Ich glaube ich hatte einen Denkfehler, oder? Das Skript macht schon das generieren der Zertifikate, oder?
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
LE_wildcard.sh heißt bei mir das Skript, welches ich als Textdatei (Dateiendung .sh wird von der Forensoftware abgelehnt) hier gepostet hatte.

Für das erste (initiale) Erstellen der Zertifikate und des Arbeitsordners, wird das Skript mit dem Parameter create aufgerufen. Das lohnt sich also nicht im Aufgabenplaner. Das Ergebnis ist hier lediglich die Ausgabe der TXT-Records wie man es von dem acme.sh-Skript kennt. Um die Ausgabe auch abfangen zu können, solltest du sie, wie schon beschrieben, in eine Textdatei umleiten (gerade wenn du es vom Aufgabenplaner ausführst)

Für spätere Aufrufe dann einfach den 'create'-Parameter weglassen.

Habe ich das einigermaßen verständlich ausgedrückt :confused:
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
okay, hab es verstanden... hatte es trotzdem über die Aufgabenplanung ausgeführt:

Rich (BBCode):
"/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/LE_wildcard.sh" create > /volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/log.txt"

Habe dann folgende Fehlermeldung erhalten:
Rich (BBCode):
Aufgabe: Task 11
Startzeit: Tue, 19 May 2020 20:22:20 GMT
Stoppzeit: Tue, 19 May 2020 20:22:20 GMT Aktueller Status: 1 (Unterbrochen)
Standardausgabe/Fehler:
sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: syntax error: unexpected end of file
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
okay ich hatte im Aufgabenplaner ein " vergessen... Jetzt hat sich die log.txt erstellt mit folgenden Inhalt:
Rich (BBCode):
Download acme.sh                   ? ok
Zertifikatserstellung vorbereiten:
(folge den nachfolgenden Anweisungen im Output für den DNS txt-Record)

Habe dann aber per Mail folgenden Fehler bekommen:

Rich (BBCode):
Aufgabe: Task 11
Startzeit: Tue, 19 May 2020 20:30:25 GMT
Stoppzeit: Tue, 19 May 2020 20:30:26 GMT Aktueller Status: 0 (Normal)
Standardausgabe/Fehler:
[Tue May 19 20:30:26 CEST 2020] Unknown parameter : Backup/Synology
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Irgendwo in deinem acme.sh-Aufruf steht Backup/Synology womit das acme-Skript nicht klarkommt.

Wo hast du etwas in 'meinem' Skript geändert?
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
ja, das ist der Pfad " WORKPATH="/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/domainname.de"

hatte ich auch gerade im Verdacht ... Vielleicht Leerzeichenübergabe?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
ja, so wird es sein. Ich habe die entsprechende Variable in dem Aufruf nicht in Anführungszeichen gesetzt (bei mir Zeile 69). Also entweder selbst tun, oder den Pfad anpassen (ich kann nicht ausschließen, dass ich es an anderer Stelle auch noch vergessen habe) …

Rich (BBCode):
 ./acme.sh --force --issue --home "$WORKPATH"

PS: im zweiten Aufruf der gleiche Fall (bei mir Zeile 93) …


Bevor du dann scharfschaltest, also ohne Parameter --test, würde ich das (erstellte) Arbeitsverzeichnis löschen (die Konfiguration geschieht ja im Skript). Ich hatte beim 1. Produktivlauf das Problem, dass ein Test-Intermediate-Zertifikat nicht ersetzt wurde. Dadurch war das gesamte Zertifikat natürlich ungültig.
 
Zuletzt bearbeitet:

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Ok, es hat tatsächlich funktioniert. Fantastisch! Eine Sache ist mir noch nicht ganz schlüssig:
ich habe ja zwei domains angegeben -d *.domainname.de -d domainname.de und bekomme natürlich 2 TXT-records. Gebe ich immer nur das letzte record in meinem domainhoster ein? Damals musste ich immer diese multidomain-variante wählen, damit ich auch auf die domain.de inkl. eines Zertifikats zugreifen konnte.

kleine Notiz: habe meine Pfade jetzt einfach angepasst (ohne Leerzeichen), war sicher sehr lange Zeit der Fehler in meiner Skript-Abfolge.

Danke und viele Grüße,
Seger
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Bei meinen ersten Versuchen (vor ein paar Wochen) erhielt ich für jede Hauptdomain EINEN TXT-Record. Jetzt habe ich auch für jeden Domaineintrag einen eigenen bekommen. Das hat mich auch gewundert, ist aber auch gar nicht schlimm, weil man für eine Domain mehrere TXT-Records anlegen kann. Also: beide eintragen!
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Okay, ich habe nur ein TXT Feld und habe nur einen eingetragen.

Aber schon mal gut das du auch mehrere hast.

Danke dir, das Skript läuft echt durch ... bin gespannt wie automatisch es bleibt ;-)

Danke nochmal!
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Den TXT-Record wirst du auch so wohl immer erneuern müssen, solange du keine API von deinem Hoster nutzen kannst.
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
@geimist /Stephan :)

Sag mal, auf was hast du denn jetzt bei dir die Aktualisierung gestellt?
Im Aufgabenmanager geht ja nur 1 Monat oder 3 Monate, oder gibt es da einen Trick auf z.B. 80 Tage zu kommen?

Viele Grüße und schöne Pfingsten,
Seger
 

TeXniXo

Benutzer
Mitglied seit
07. Mai 2012
Beiträge
4.948
Punkte für Reaktionen
100
Punkte
134
In dem Fall keinen Trick notwendig. Einfach eine weitere - identische - Aufgabe anlegen mit einem zB. x Tage späteren Zeitpunkt. d.h. Aufgabe 1 führt nach x Tagen aus, Aufgabe 2 nach x*2 Tagen und dann ist die Aufgabe 1 wieder dran usw.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Es spricht ja auch nichts dagegen, es in Verbindung mit dem Parameter --force jeden Monat aufzurufen. Solange sich die TXT-Records von Zeit zu Zeit ändern und ich auf keine API meiner Domainhoster zurückgreifen kann, werde ich es eh nur manuell aufrufen.
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
507
Punkte für Reaktionen
15
Punkte
44
Was spricht gegen eine einmonatige Aktualisierung?
Ansonsten ist denke ich schon das ein Trick notwendig.
Man könnte ein Script täglich ausführen lassen und dann dem Script z.B. sagen nur am 01. etwas zu tun, wenn der Monat gerade ist. Um so einen 2-monatigen Rhythmus zu bekommen.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Bei mir funktioniert die letzte Erneuerung nicht mehr. Auch eine Neuausstellung läuft nicht mehr durch. Scheinbar können die TXT-Records von selfhost nicht mehr korrekt validiert werden. Hat jemand ähnliche Probleme in Verbindung mit selfhost?

Code:
root@DS:~# /volume1/homes/admin/script/LE_wildcard.sh
Download acme.sh                   ? ok (bereits vorhanden / Version: 3.0.1)
erstelle / erneuere das Zertifikat ? [Sat Oct 16 12:17:43 CEST 2021] Renew: '*.domain1.eu'
[Sat Oct 16 12:17:44 CEST 2021] Using CA: https://acme.zerossl.com/v2/DV90
[Sat Oct 16 12:17:44 CEST 2021] Multi domain='DNS:*.domain1.eu,DNS:*.domain2.de,DNS:domain1.eu,DNS:domain2.de'
[Sat Oct 16 12:17:44 CEST 2021] Getting domain auth token for each domain
[Sat Oct 16 12:17:44 CEST 2021] Verifying: *.domain1.eu
[Sat Oct 16 12:17:46 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Sat Oct 16 12:17:49 CEST 2021] Success
[Sat Oct 16 12:17:49 CEST 2021] Verifying: *.domain2.de
[Sat Oct 16 12:17:49 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Sat Oct 16 12:17:52 CEST 2021] Success
[Sat Oct 16 12:17:52 CEST 2021] Verifying: domain1.eu
[Sat Oct 16 12:17:53 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Sat Oct 16 12:17:56 CEST 2021] Processing, The CA is processing your order, please just wait. (2/30)
[Sat Oct 16 12:17:59 CEST 2021] Success
[Sat Oct 16 12:17:59 CEST 2021] Verifying: domain2.de
[Sat Oct 16 12:17:59 CEST 2021] Processing, The CA is processing your order, please just wait. (1/30)
[Sat Oct 16 12:18:02 CEST 2021] Processing, The CA is processing your order, please just wait. (2/30)
[Sat Oct 16 12:18:05 CEST 2021] Success
[Sat Oct 16 12:18:05 CEST 2021] Verify finished, start to sign.
[Sat Oct 16 12:18:05 CEST 2021] Lets finalize the order.
[Sat Oct 16 12:18:05 CEST 2021] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/DgvG5nMcIVd2LiKP66rRcw/finalize'
[Sat Oct 16 12:18:06 CEST 2021] Order status is processing, lets sleep and retry.
[Sat Oct 16 12:18:06 CEST 2021] Retry after: 15
[Sat Oct 16 12:18:22 CEST 2021] Polling order status:  https://acme-v02.api.letsencrypt.org/acme/order/86562733/3421978001
[Sat Oct 16 12:18:38 CEST 2021] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 1
[Sat Oct 16 12:18:41 CEST 2021] Sign error, wrong status
0     ct 16 12:18:41 CEST 2021]
[Sat Oct 16 12:18:41 CEST 2021] Please check log file for more details: ./_wildcardcert/acme.sh.log
[Sat Oct 16 12:18:41 CEST 2021] The dns manual mode can not renew automatically, you must issue it again manually. You'd better use the other modes instead.
FEHLER! Skript wird beendet
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.060
Punkte für Reaktionen
3.872
Punkte
488
Interpretierst du die Ausgabe so? Klar da gibt es Retries, aber am Ende steht ja jeweils ein Success.
Mich stört da eher der untere Teil mit dem Zugriff auf https://acme-v02.api.letsencrypt.org/acme/order/86562733/3421978001

Vielleicht gibt es ja da ein (hoffentlich temporäres) Problem
Code:
{
  "type": "urn:ietf:params:acme:error:malformed",
  "detail": "No order for ID 3421978001",
  "status": 404
}
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Leider werde ich aus dem Log auch nicht recht schlau. Ich hatte bereits vor über einer Woche die Erneuerung angestoßen. Da schien das Log immer ein Problem in Verbindung mit der Selfhostdomain (domain1.eu) zu haben. Die 2. Domain ist ein CNAME auf eines anderen Anbietes auf die Selfhostdomain. Da will ich mich natürlich nicht festlegen.

Ich weiß auch nicht, ob diese Zeilen auf eine Inkompatibilität mit dem DSM-curl hindeuten könnten:
Code:
[Sat Oct 16 12:18:38 CEST 2021] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 1
[Sat Oct 16 12:18:41 CEST 2021] Sign error, wrong status

Wie erstellt / 'verlängert' ihr eure Wildcardzertifikate?
Funktioniert das noch einwandfrei?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat