Lets Encrypt Wildcard Zertifikat (ACME v2)

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Hast du nun mehrere oder nur ein einziges Zertifikat (Wildcard) für alle Services in der Diskstation eingerichtet?

So wie du es schilderst handelt es sich in deinem Fall um mehrere Zertifikate richtig?

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Nee nee, es geht um ein einziges.

Ich habe es nur in 2 Skript geteilt, damit ich nicht den Überblick verliere. Das erste Skript hat die Dateien geholt und entsprechend an den Pfad kopiert und das zweite Skript, welches ja von dir ist, sollte jetzt den Rest machen. Das kann gern auch alles in ein Skript zusammengefasst werden. Ich habe nur ein Wildcard Zertifikat.

Danke dir schon mal vielmals.

Viele Grüße
Seger
 
Zuletzt bearbeitet von einem Moderator:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Also das Skript von mir macht folgendes.

a.) Man ruft das Skript mit einem Argument auf welches dem Namen entspricht das man für das Zertifikat vergeben hat.
b.) Das Skript prüft ob sich das Zertifikat welches durch ein anderes Skript erneuert wird geändert hat (sprich sich die Checksumme geändert hat)
c.) Wenn es eine aktualisierung des Zertifikats gibt, dann wird der Speicherort (Zielpfad) auf der Diskstation gesucht wohin es kopiert werden soll.
d.) Am schluss, wenn das Zertifikat erneuert wurde und der Name in der INFO Datei (File auf der Diskstation welches als Informationsliste aller Zertifikate verwendet wird) gefunden werden konnte dann wird das erneuerte Zertifikat kopiert von Quellverezeichnis nach Zielverzeichnis.


Hast du schon mal einen Blick in die INFO Datei (/usr/syno/etc/certificate/_archive/INFO) geworfen? Dort findet man unter dem Parameter "desc" den Namen welchen man für das Zertifikat vergeben hat.
Und genau nach diesem muss man suchen (Argument Nummer 1 beim Skriptaufruf).

Benötigst du den Teil aus dem Skript dass per Checksummenvergleich geprüft wird ob das Zertifikat erneuert wurde? Oder benötigst du nur den Teil der das Zertifikat an die entsprechende Stelle kopiert?

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Also ich glaube wir müssen nochmal ganz vorne anfangen, ich verstehe gerade nichts mehr.

Unter DESC steht nicht drin: "desc" : "",

Ich habe folgendes Skript ausgeführt:

Rich (BBCode):
#!/bin/bash
# 1. replace "Domain.de” with your domain name
# 2. schedule this script to be run once per three months in Task Scheduler
echo "======================================================================"
echo "Certificate Renewal"
echo "======================================================================"
./acme.sh --force --renew -d *.Domain.de -d Domain.de --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
echo ""

echo "======================================================================"
echo "Copying New Files to folder: volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/"
echo "======================================================================"
cp "/root/.acme.sh/*.Domain.de/*.Domain.de.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/Domain.de.cer"
cp "/root/.acme.sh/*.Domain.de/*.Domain.de.key" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/Domain.de.key"
cp "/root/.acme.sh/*.Domain.de/ca.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/ca.cer"
cp "/root/.acme.sh/*.Domain.de/fullchain.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/fullchain.cer"
echo ""

echo "======================================================================"
echo "Renewed Certificate Publication"
echo "======================================================================"
certFile="/root/.acme.sh/*.Domain.de/*.Domain.de.cer"
chainFile="/root/.acme.sh/*.Domain.de/ca.cer"
fullchainFile="/root/.acme.sh/*.Domain.de/fullchain.cer"
privkeyFile="/root/.acme.sh/*.Domain.de/*.Domain.de.key"
privkey_fullchainFile="/root/.acme.sh/*.Domain.de/*.Domain.de.privkey_fullchain"
echo ""

# Create file privkey_fullchain.pem
cp $privkeyFile $privkey_fullchainFile
echo "">>$privkey_fullchainFile
echo "">>$privkey_fullchainFile
cat $certFile>>$privkey_fullchainFile
cat $chainFile>>$privkey_fullchainFile
echo "">>$privkey_fullchainFile
echo "">>$privkey_fullchainFile
echo "Copy privkey_fullchain.pem to folder: volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/"
cp "$privkey_fullchainFile" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de/privkey_fullchain.pem"

Jetzt habe ich in "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Domain.de" 5 Dateien:
ca.cer
fullchain.cer
privkey_fullchain.pem
Domainname.de.cer
Domainname.de.key

und mit diesen Dateien habe ich das Zertifikat manuell in meiner DSM hinzugefügt ...

Kannst du mir vielleicht ein komplett funktionierendes Beispiel geben?
Oder habe ich schon gleich zu Anfang was falsch gemacht?
 
Zuletzt bearbeitet von einem Moderator:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Okay wenn bei dir in der INFO Datei unter desc ein Leerstring steht dann hast du dem Zertifikat im Zertifikatmanager keinen Namen vergeben.

dsm-cert-name.png

Aber die Struktur ist wie folgt.

Rich (BBCode):
   },
   "R1EdUK" : {
      "desc" : "",
      "services" : [
         {
            "display_name" : "sub.domain.tld",
            "isPkg" : false,
            "owner" : "root",
            "service" : "FQDN",
            "subscriber" : "system"
         }
      ]
   },

Die Zeile über "desc" ist der interessante Teil. Dies ist nämlich das Verzeichnis wo die Zertifikatsdateien liegen.

Also in disem Beispiel wäre das Verzeichnis

Rich (BBCode):
/usr/syno/etc/certificate/_archive/R1EdUK

Somit müsstest du nun alle *.pem Zertifikatsdateien von deinem Quellverzeichnis ins Zielverzeichnis kopieren.

Rich (BBCode):
cp /volume1/DiskStation/Programme/5\ Backup/Synology\ Zertifikat/Wildcard/Domain.de/*.pem /usr/syno/etc/certificate/_archive/R1EdUK

In deinem Fall sind es aber 5 Dateien nicht alle als *.pem
ca.cer
fullchain.cer
privkey_fullchain.pem
Domainname.de.cer
Domainname.de.key

Wenn ich in ein Verzeichnis auf der Diskstation hineinschaue (in meinem Beispiel: /usr/syno/etc/certificate/_archive/R1EdUK) dann sehe ich 4 *pem Dateien.
cert.pem
chain.pem
fullchain.pem
privkey.pem


--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Okay wir kommen der Sache irgendwie näher, glaube ich.

Also ich habe auch so ein Verzeichnis bei mir ist es "XjM2Cz"
In diesem sind auch 4 Dateien mit der Endung *.pem drin.

Meine anderen 4 Dateien sind von meinem Vorgang als ich das Zertifikat das erste Mal erstellt habe:

Rich (BBCode):
./acme.sh --issue -d *.Beispieldomain.de -d Beispieldomain.de --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

Rich (BBCode):
cp "/root/.acme.sh/*.Beispieldomain.de/*.Beispieldomain.de.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Beispieldomain.de/Beispieldomain.de.cer"
cp "/root/.acme.sh/*.Beispieldomain.de/*.Beispieldomain.de.key" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Beispieldomain.de/Beispieldomain.de.key"
cp "/root/.acme.sh/*.Beispieldomain.de/ca.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Beispieldomain.de/ca.cer"
cp "/root/.acme.sh/*.Beispieldomain.de/fullchain.cer" "/volume1/DiskStation/Programme/5 Backup/Synology Zertifikat/Wildcard/Beispieldomain.de/fullchain.cer"

Danach habe ich wie gesagt das Zertifikat manuell ins DSM hinzugefügt. Dafür benötige ich ja auch genau diese 4 Dateien.

Jetzt gehe ich davon aus, dass sich dann nach der erfolgreichen Implementierung in DSM diese 4 Dateien hier:
Rich (BBCode):
/usr/syno/etc/certificate/_archive/XjM2Cz
erstellt haben.

Oder bin ich auf dem Holzweg? Wie genau geht es denn jetzt weiter wenn ich auch diese 4 *pem dateien dort habe?

Danke dir vielmals...

Bin gespannt wann der Groschen bei mir komplett fällt.

Seger
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Ja genau, bei dir sollten die Zertifikatsdateien an der von dir genannten Stelle befinden.

/usr/syno/etc/certificate/_archive/XjM2Cz

Das einzige was jetzt zu tun ist um das zu automatisieren alles sich darin befindlichen Dateien mit den neu generierten zu überschreiben und den Webserver neu starten damit die Zertifikate neu eingelesen werden.
In deinem Fall liegen ja die Dateien nicht im *pem Format vor. D.h. an dieser Stelle habe ich selbst keine Erfahrung ob die Disksation hier andere Dateien akzeptiert. Am besten man konvertiert diese zuerst in das pem Format und benennt sie entsprechend um genau so wie sie eben bereits in dem Verzeichnis vorzufinden sind.

Mehr wäre ja nicht zu tun... Oder was fehlt dir jetzt?

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
ja, aber wie aktualisierst du denn, mit welchen Befehl? Kann ja nicht sein das sie bei mir nicht in dem Format vorliegen.
Irgendwas mache ich ja anscheinend falsch ...

Habe dein Skript jetzt einfach so angepasst:
Es läuft durch, aber es ändert sich nichts! Die .pem Dateien sind auch noch 4 Wochen alt.

Rich (BBCode):
#!/bin/bash

# Speichern des Arguments (Übergabeparameter, Such string für die Description)
searchPatternDesc=XjM2Cz

# Definition der verwendeten Dateien / Dateipfade
# Quellpfade der Zertifikate
OriginRenewedCertPath=/usr/syno/etc/certificate/_archive/XjM2Cz
CertFile=$OriginRenewedCertPath/cert.pem

# Definition der Hash Dateien zum Abgleich auf Änderung
HashFileCurrent=$OriginRenewedCertPath/hash-current.txt
HashFileTemp=$OriginRenewedCertPath/hash-temp.txt

# Zielpfade der Zertifikate
InfoFile=/usr/syno/etc/certificate/_archive/INFO
CertRootPath=/usr/syno/etc/certificate/_archive

# Initialisiere die Variable für das Ergebnis mit dem Default Wert "1" --> Description nicht gefunden
# Wert "0" ---> Description in INFO Datei gefunden
result=1

# Prüfen ob die Zertifikatsdatei an dem angebenen Ort vorhanden ist
# Wenn ja, dann erstelelle von dieser Datei eine CSUM (in diesem Beispiel eine MD5)
# und schreibe die Checksumme anschließend in die Datei welche unter der Variable $HashFileTemp definiert wurde.
if [ -f $CertFile ]; then
  hashmd5=`openssl dgst -md5 $CertFile | egrep -o [0-9a-zA-Z]{32}`
  echo $hashmd5 > $HashFileTemp # Dieses Echo bleibt, Inhalt der Variable wird in Datei gespeichert.
fi

# Prüfen ob bereits eine aktuelle Checksumme zur Zertifikatsdatei existiert. Somit wird überprüft ob die Datei welche in der
# Variable $HashFileCurrent definiert wurde vorhanden ist.
# Wenn somit beide Datein vorhanden sind, welche zum einen die aktuelle Checksumme und die Checksumme die zur Überprüfung
# herangezogen wird existieren sprich $HashFileCurrent UND $HashFileTemp dann prüfe auf einen Unterschied und vergleiche.
if [ -f $HashFileCurrent ] && [ -f $HashFileTemp ]; then
  diffresult=`diff $HashFileCurrent $HashFileTemp`
   
  # Jetzt wird überprüft ob das Resultat des Vergleichs nicht leer ist, sprich beide Checksummen sich unterscheiden.
  # Dann wird die gegenwärtige aktuelle Checksumme mit der neu genierten überschrieben und abgelegt.
  # Dies hat zur Forlge, dass die Checksumme welche in der Datei abgelegt ist wieder zur gegenwärtigen Cert-Datei passt.
  if [ ! -z "$diffresult" ]; then
    #echo Checksumme hat sich geändert! # Die Ausgabe dient nur fürs debugging (kann später entfernt werden)
    #echo Alte CSUM: `cat $HashFileCurrent` # Die Ausgabe dient nur fürs debugging (kann später entfernt werden)
    #echo Neue CSUM: `cat $HashFileTemp` # Die Ausgabe dient nur fürs debugging (kann später entfernt werden)
    mv $HashFileTemp $HashFileCurrent
    ####################################################################################
    #
    # ToDo(1): Hier wird nun der Speicherort für das Zertifikat anhand dessen Beschreibung
    #       herausgesucht und die aktualisierten Zertifakte anschließend an den Zielort
    #       kopiert und im Anschluss der Webserver (nginx) neu gestartet.
    #
    #
    if [ ! -z "$searchPatternDesc" ]; then

      for randomFolderName in `grep -i -B 1 '"desc"' $InfoFile | grep -Eo '"([a-zA-Z0-9]{6})"' | sed 's/"//g'`; do
        description=`grep -i -A 1 "$randomFolderName" $InfoFile | grep -Eo '"desc" : "(.+)"' | sed 's/"desc" : //g' | sed 's/"//g'`
  
        if [ "$searchPatternDesc" == "$description" ]; then
          #############################################################################
          #
          # ToDo(2): Es wurde ein Verzeichnis zum jeweiligen Argument (Description) gefunden
          #          und das erneuerte Zertifikat wird vom Quellort zum Zielort kopiert.
          #          Hierbei werden alle Dateien mit der Endung *.pem berücksichtigt.
          #          Anschließend wird der Webserver neue gestartet.
          #
          TargetPath=$CertRootPath/$randomFolderName
          cp $OriginRenewedCertPath/*.pem $TargetPath
          #############################################################################
          #
          # restart nginx
          #
          synoservicectl --restart nginx
          #
          #############################################################################
          result=0
          #
          # End of ToDo(2)
          #
          #############################################################################
        fi

        if [ $result -eq 1 ]; then
          : # Nothing to do here, because no description found.
          #echo "No Description found for \"$searchPatternDesc\""
        fi
        # reset the result value to default
        result=1
      done
  
    else
      : # Nothing to Do, only for debugging
      #echo No Search String given!
    fi
    
    #
    # End of ToDo(1) 
    #
    ####################################################################################
  
  # In dem Fall dass sich die Checksummen nicht unterscheiden, sprich die Variable des results "leer" ist
  # soll lediglich die temporär ertellte Checksummen Datei entfernt werden.
  else
    #echo Keine Änderung! # Die Ausgabe dient nur fürs debugging (kann später entfernt werden)
    rm $HashFileTemp
  fi

  # Wenn zu Beginn, also bei der ersten Ausführung des Scripts noch keine aktulle Checksummen Datei zum Vergleich existiert
  # dann lege diese anhand der aktuell erstellen CSUM ab. Umbenennen der temporären Datei in die aktuell gültige.
else
  if [ -f $HashFileTemp ]; then
    #echo Initial: Noch kein CSUM Vergleich Möglich. # Die Ausgabe dient nur fürs debugging (kann später entfernt werden)
    mv $HashFileTemp $HashFileCurrent
  fi
fi

exit 0
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
achso, es hat sich eine hash-current.txt erstellt.
Ja gneau...

Das ist exakt das was ich ja eingangs beschrieben habe. Siehe Post #63

D.h. wenn du jetzt eine Datei hash-current.txt vorliegen hast dann hast du jetzt den sogenennaten Initialzustand. Wenn du jetzt mittels acme deine Zertifikate erneuerst und das Skript von mir erneut ausführst dann wird es erkennen dass sich die Checksumme im Vergleich zu der die als Datei abgelegt ist geändert hat. Und erst jetzt werden die aktualisierten Dateien von der Quelle zum Ziel kopiert.

--luddi
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Außerdem sehe ich gerade du hast das Skript angepasst und den Parameter wie folgt definiert:

Rich (BBCode):
searchPatternDesc=XjM2Cz
Das ist ja bereits der Zielordner bei dir auf dem System. Der Parameter searchPatternDesc dient dazu den desc Eintrag zu finden und dann die Zeile oben drüber XjM2Cz ausfindig zu machen.

In deinem Fall würde das Script nach der Beschreibung XjM2Cz unter "desc" suchen und somit nie finden.

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
okay also da wieder =$1 rein?

Dein Skript habe ich jetzt verstanden, glaube ich. Aber wie bekommst du denn immer aktualisierte .pem dateien?
Ich führe das auf meiner Synology aus:
Rich (BBCode):
./acme.sh --force --renew -d *.Beispieldomain.de -d Beispieldomain.de --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

und bekomme immer die 4 Dateien mit falscher Endung... da machst du noch was anders als ich.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Ich selbst mache es überhaupt nicht auf diese Methode.

Das Skript entstand aus der Motiviation heraus dem User "blinddark" zu helfen der eine Möglichkeit suchte die neu generierten Dateien automatisch per Skript an die richtige Stelle kopieren zu wollen.

Wenn du mein Skript verstanden hast (also grob) ;) dann kannst du auch wieder =$1 einsetzen.
Aber was heißt das für dich? $1 ist für die bash das Argument Nummer 1 und somit müsstest du nun beim Aufruf des Skripts ein Argument angeben.
Ob du nun den Namen per Argument übergibts oder direkt im Skript definierst bleibt dir überlassen. ABER nochmals zur Hilfestellung... der Parameter den ich hierfür verwende ist dafür gedacht um nach der Beschreibung "desc" in dem INFO File zu suchen. Wenn dein Zertifikat (wenn ich mich recht erinnere) den Namen (Leerstring hat) "" dann könnte es funnktionieren wenn du bei der Definition ="" angibst.

Ich würde dir Aber empfehlen dem Zertifikat über die DSM GUI einen Namen zu vergeben z.B. "Default Cert", und dann kannst du eben den Parameter wie folgt angeben:

Rich (BBCode):
searchPatternDesc="Default Cert"
oder dann per Argument definieren
Rich (BBCode):
searchPatternDesc=$1
und beim aufruf des Skripts -->

Rich (BBCode):
skirpt.bash "Default Cert" 

oder das Leerzeichen per escape seqeunz

skript.bash Default\ Cert

Nochmals zurück zu dem Thema Dateiformat. Als ich blinddark geholfen habe dieses Skript zu erstellen ging es nicht darum ob *.pem oder nicht. Ich ging ständig davon aus, dass die Dateien bereits im pem Format vorliegen.

Edit
Wenn du natürlcih alle dateien im Pem Format benötigst dann solltest du sie gleich nach der erstellung bzw. aktualisierung umwandeln und auch entpsrechend umbenennen damit sie in die Welt der Zertifikatsverwaltung von Synology passen und akzeptiert werden...

z.B. mit folgendem Befehl:
Rich (BBCode):
openssl x509 -in mycert.crt -out mycert.pem -outform PEM

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Okay ich habe es jetzt so gemacht und verstanden:

Rich (BBCode):
searchPatternDesc="Default Cert"

@all
@blinddark vielleicht kannst du/ihr ja nochmal helfen, wieso bzw. wie generiert ihr denn alle die .pem dateien?

macht ihr das auch alle mit dem Code?

@luddi, wie gehst du denn vor, wie hast du es automatisiert? Ich möchte doch eigentlich nur eine vollautomation realisieren.

Als nächstes versuche ich jetzt per Skript alle Dateien umzubennen und zu kopieren, mal schauen was ich mir hierdurch zerschieße...

Danke und viele Grüße,
Seger
 

blinddark

Benutzer
Mitglied seit
03. Jan 2013
Beiträge
1.385
Punkte für Reaktionen
34
Punkte
68
Hi ja ich mache das auch über das skript wie oben in den beiden Postings erwähnt. mit #20 installierst du dir acme und generierst die Zertifikate und im post 33 hat @luddi den großen Rest zusammengefasst und getestet. Mein Raspberry auf dem alles läuft hat ein bischen Zicken gemacht, aber Ersatz ist heute eingetroffen und ich kann wieder aktiv einsteigen, so bald das Image zurückgespielt wurde und die Aktualisierungen gemacht sind. Acme kannst du auch auf deiner DS installieren.
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
Kannst du mir vielleicht nochmal helfen und den code zur Verfügung stellen wie ich die folgende automatische Erstellung gesamthaft umbenenne/umwandle und an den richtigen Ort kopiere/überschreibe

root@DiskStation:~# ./acme.sh --renew --keylength 4096 --domain Beispieldomain.de --domain *.Beispieldomain.de --domain *.vpn.Beispieldomain.de --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --cert-file "/usr/syno/etc/certificate/_archive/XjM2Cz/cert.pem" --key-file "/usr/syno/etc/certificate/_archive/XjM2Cz/privkey.pem" --ca-file "/usr/syno/etc/certificate/_archive/XjM2Cz/chain.pem" --fullchain-file "/usr/syno/etc/certificate/_archive/XjM2Cz/fullchain.pem"
[Mon May 11 16:20:12 CEST 2020] Renew: 'Beispieldomain.de'
[Mon May 11 16:20:14 CEST 2020] Multi domain='DNS:Beispieldomain.de,DNS:*.Beispieldomain.de,DNS:*.vpn.Beispieldomain.de'
[Mon May 11 16:20:14 CEST 2020] Getting domain auth token for each domain
[Mon May 11 16:20:14 CEST 2020] Beispieldomain.de is already verified, skip dns-01.
[Mon May 11 16:20:14 CEST 2020] *.Beispieldomain.de is already verified, skip dns-01.
[Mon May 11 16:20:14 CEST 2020] Verifying: *.vpn.Beispieldomain.de
[Mon May 11 16:20:18 CEST 2020] Success
[Mon May 11 16:20:18 CEST 2020] Verify finished, start to sign.
[Mon May 11 16:20:19 CEST 2020] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/83795756/3324619275
[Mon May 11 16:20:20 CEST 2020] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/049a68f0b27104637c8efb4cd6fdd518a9f2
[Mon May 11 16:20:21 CEST 2020] Cert success.



[Mon May 11 16:20:21 CEST 2020] Your cert is in /root/.acme.sh/Beispieldomain.de/Beispieldomain.de.cer
[Mon May 11 16:20:21 CEST 2020] Your cert key is in /root/.acme.sh/Beispieldomain.de/Beispieldomain.de.key
[Mon May 11 16:20:21 CEST 2020] The intermediate CA cert is in /root/.acme.sh/Beispieldomain.de/ca.cer
[Mon May 11 16:20:21 CEST 2020] And the full chain certs is there: /root/.acme.sh/Beispieldomain.de/fullchain.cer
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
okay, installiert habe ich es nicht, ich führe es immer einfach so aus wie oben gepostet.
Es werden bei mir aber 4 Dateien erstellt, siehe Ausgabe...
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Okay ich habe es jetzt so gemacht und verstanden:

Rich (BBCode):
searchPatternDesc="Default Cert"
Dann hoffe ich du hast dem Zertifikat auch diesen Namen gebegen in DSM?

@luddi, wie gehst du denn vor, wie hast du es automatisiert? Ich möchte doch eigentlich nur eine vollautomation realisieren.
Ich verwende kein Wildcard Zertifikat un somit lasse ich alles DSM für mich aktualisieren...

Als nächstes versuche ich jetzt per Skript alle Dateien umzubennen und zu kopieren, mal schauen was ich mir hierdurch zerschieße...
Nicht nur umzubenennen sondern auch in das entsprechende PEM Format zu konvertieren... Denk an den Befehl den ich dir gegeben habe...


Du hast 5 Dateien: ca.cer, fullchain.cer, privkey_fullchain.pem, Domainname.de.cer, Domainname.de.key
Und auf der Diskstation liegen 4 PEM Dateien: cert.pem, chain.pem, fullchain.pem, privkey.pem
Du hast doch wenn ich es richtig interpretiert habe privkey und fullchain zusammengefasst zu einer Datei oder?

Jetzt müsste man nur noch die entsprechende Zugehörtigkeit ausfindig machen.
Das ca.cer entspricht sicher dem cert.pem

Beispiel für dein Skript zum konvertieren...
Somit würde die Konvertierung wie folgt funktionieren:
Rich (BBCode):
openssl x509 -in /volume1/DiskStation/Programme/5\ Backup/Synology\ Zertifikat/Wildcard/Domain.de/ca.cer -out /volume1/DiskStation/Programme/5\ Backup/Synology\ Zertifikat/Wildcard/Domain.de/cert.pem -outform PEM

--luddi
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
@blinddark
nicht das wir uns falsch verstehen, aber ich bin nur auf synology unterwegs, da ist kein Pi zwischen. Kann ich das genauso installieren oder sollte ich da noch Pfade anpassen?

So zum Beispiel:
Rich (BBCode):
./acme.sh --install --home /opt/acme.sh --config-home /etc/acme.sh --cert-home /usr/syno/etc/certificate/_archive/XjM2Cz --accountemail "mail@domain.de"

Ich kann natürlcih auch einen anderen festen Pfad wählen und von dort dann wieder kopieren.

Macht das Sinn? Hast du es auch so?
 

seger85

Benutzer
Mitglied seit
21. Feb 2018
Beiträge
127
Punkte für Reaktionen
0
Punkte
16
@luddi

ich bin gerade beim zuordnen und ich glaube ich bin gleich soweit, aber bei einer Datei gibt er mir einen Fehler:

unable to load certificate
139825969481360:error:0906D06C:pEM routines:pEM_read_bio:no start line:pem_lib.c:697:Expecting: TRUSTED CERTIFICATE

Rich (BBCode):
openssl x509 -in /volume1/DiskStation/Programme/5\ Backup/Synology\ Zertifikat/Wildcard/Beispieldomain.de/Beispieldomain.de.key -out /volume1/DiskStation/Programme/5\ Backup/Synology\ Zertifikat/Wildcard/Beispieldomain.de/privkey.pem -outform PEM
 


 

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