Ankündigung

Einklappen
Keine Ankündigung bisher.

Signed SSL certificate von "Lets Encrypt" für HS4 nutzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Signed SSL certificate von "Lets Encrypt" für HS4 nutzen

    Ich komme bei folgendem Thema nicht weiter.

    Nachdem ich meinen HS4 auf 4.7 laufen habe wollte ich gerne ein SSL Zertifikat einsetzen das von allen Browsern akzeptiert wird. Ich habe mehrere Rechner zuhause und möchte auch gerne mal von anderen externen PCs auf meinen HS zugreifen können, daher wollte ich nicht mit "self signed" Zertifikat arbeiten.
    Bei meinem privaten Webserver mache ich das problemls mit "Let's encrypt" (https://letsencrypt.org/), wo mittlerweile über 50% aller globalen SSL Zertifikate herkommen.
    Gira bietet hierfür auch eine browserbasierte Lösung um eigene Zertifikate hochzuladen.

    Das Problem ist, dass man beim Prozess der Erstellung des Zertifikates eine gewisse Datei auf dem Server speichern muss damit Let's encrypt mich als "Besitzer" der Domain verifizieren kann.

    Offenbar ist SSH Zugriff oder anderweitiger Root Zugriff auf den HS nicht möglich, ich habe online diverse "Gleichgesinnte" gefunden die hier erfolglos blieben.

    Hat irgendjemand eine Idee wie man das bewerkstelligen könnte?

    Besten Dank, Andreas

    #2
    Mir würden hierfür nur zwei Varianten einfallen:

    1) Ein Reverse-Proxy vorschalten, der die SSL-Terminierung übernimmt und mit dem HS über HTTP kommuniziert
    2) Das Zertifikat auf einem anderen Computer generieren und per DNS-Challenge authentifizieren, das hat den Vorteil, dass es dafür keinen extra Webserver braucht. Aber Du musst das Zertifikat dann händisch alle 3 Monate aktualisieren und im HS austauschen, klingt für mich extrem unpraktikabel.

    Kommentar


      #3
      Hallo Andreas,

      konntest du mittlerweile dein Zertifikat auf den Homeserver hochladen?

      Im Experten unter Projekteinstellungen habe ich unter dem Punkt "Sicherheit" > "Zertifikat erzeugen" : "Zertifikat auf das Gerät laden" ausgewählt.
      Über die Adresse https://HS_IP/hscert gibt es dann den Punkt "Hochladen".

      Ich habe auch Lets Encrypt, bekomme aber das .PEM File nicht hochgeladen.
      "Der Server hat das Zertifikat als ungültig abgewiesen"

      Hat jemand eine Idee woran das liegen könnte?

      Gruß
      Sascha

      Kommentar


        #4
        Das mit den offiziellen Zertifikaten scheint nicht allzuoft verwendet zu werden.
        Mein Zertifikat habe ich wie in der Hilfe angegeben als .PEM ohne Passwort hochgeladen.
        Darauf meint der HS, das das Passwort falsch ist. Hat das wirklich jemand erfolgreich geschafft
        ein nicht selbst erstelltes Zertifikat im HS einzubinden und zu nutzen?
        Think Different

        Kommentar


          #5
          Ich kenne den HS und dessen Interface (noch) nicht. Wie sieht denn der reguläre Workflow aus? Könnt ihr ggf. ein paar Screenshots der entsprechenden Seiten posten? Gibt es denn Zertifikate / Schlüssel, die ihr erfolgreich hochladen könnt? Steht irgendwo beschrieben, welches Format erwartet wird?

          Ein paar Dinge, kommen mir beim Durchlesen nämlich auffällig vor:
          • Das Zertifikat an sich ist "unkritisch". Dieses muss/soll nicht verschlüsselt werden. Im Wesentlichen gibt es die Formate PEM und BER/DER und PKCS12. Typische Dateiendungen sind ".crt", ".cert", ".pkcs", ".pfx", ".p12", etc.
          • Der "kritische" Teil ist der private Schlüssel. Auch dieser kann in o.g. Formaten vorliegen. Typische Dateiendungen sind ".key", ".crt" (obwohl kein Zertifikat), ".ber", etc.
          • Die Dateiendungen sagt nicht notwendigerweise etwas über das Format aus
          • Im Falle von PKCS12 kann sich Schlüssel und Zertifikat in der selben Datei befinden
          • Wird wirklich der Upload eines Zertifikats erwartet, oder ein CSR, etc. generiert? Je nach Appliance/Anwendung habe ich schon die verschiedensten Workflows gesehen
          • Manueller Upload von Zertifikats bzw. Schlüsselmaterial ist nervig und macht das Automatisieren schwierig. Ggf. lässt sich das ja dann per Skript mittels HTTP hochladen, etc.
          • Hat sich schon jemand mit dem Support in Verbindung gesetzt? Wenn es eine solche Funktion/Interface gibt, dann sollte der Support sich ja auskennen.

          Kommentar


            #6
            Wenn Sie Ihr Zertifikat im pfx-Format haben, also passwortgeschützt, verwenden Sie diesen Befehl, um es mit openssl in den richtigen Typ zu konvertieren.
            openssl pkcs12 -in cert.pfx -out certHS.pem -nodes -password pass:PASSWORD

            Kommentar


              #7
              Also ich hab es folgendermassen geschafft ein Zertifikat meiner CA hochzuladen. Mit Letsencrypt wird dies nie automatisch gehen und ist weder "sicher" noch eine Lösung um es alle 3 Monate zu tun.
              1. Zertifikat im PEM Format exportieren
              2. Privater Schlüssel unverschlüsselt im PEM Format exportieren
              3. Inhalt des Zertifikats und Inhalt des privaten Schlüssels in einer Datei mit der .pem Dateierweiterung speichern
                -----BEGIN CERTIFICATE-----
                MIIGYDCCBEigAwIBAgIKX/8XWhEmLGy7WTANBgkqhkiG9w0BAQsFADBfMQswCQYD
                ...
                ...
                Fl/L9A==
                -----END CERTIFICATE-----
                -----BEGIN PRIVATE KEY-----
                MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQ D0BTrsLoj3ozL9
                ...
                ...
                rZqYjLnSdVZpVlScpjo+9bM=
                -----END PRIVATE KEY-----
              4. Unter https://IP-HS/hscert dieses zusammen kopierte .pem Datei hochladen, Admin und Passwort des HS eingeben, hochladen und HS neu starten.
              5. Den HS mit eurem Zertifikat geniessen
              Gruss Daniel

              Kommentar


                #8
                Zitat von abeggled Beitrag anzeigen
                Mit Letsencrypt wird dies nie automatisch gehen
                naja... Alle haben gesagt 'das geht nicht', bis einer kam der das nicht wusste und es einfach gemacht hat. ;-)

                diesmal war es chatGPT.

                ##!/bin/sh
                # Server URL und Pfad zum Upload-Endpunkt
                SERVER_URL="http://hs.XXX.de/hscert/upload?port=0&dummy=$(date +%s)"
                USERNAME="xxx"
                PASSWORT="xxx"
                ZERTIFIKAT_DATEI="/cf/conf/acme/wildcard.xxx.de.all.pem"

                # Hochladen des Zertifikats mit curl und Basic Authentication
                ERGEBNIS=$(curl -v -u "$USERNAME:$PASSWORT" -F "file=@$ZERTIFIKAT_DATEI" $SERVER_URL)

                # Überprüfe, ob der Upload erfolgreich war (basierend auf der Serverantwort)
                if echo "$ERGEBNIS" | grep -q '"result": true'; then
                NACHRICHT="Zertifikatshochladen auf homeserver erfolgreich: $ERGEBNIS"
                else
                NACHRICHT=" Zertifikatshochladen auf homeserver fehlgeschlagen: $ERGEBNIS"
                fi

                echo $ERGEBNIS | /usr/local/bin/mail.php -s"$NACHRICHT"


                Läuft so auf einer pfSense, die die Certs regelmäßig holt und intern verteilt.

                Gruß,
                Hansa​

                Kommentar


                  #9
                  Ich mache das über Reverse Proxy (Nginx).

                  Aber auch deshalb, weil ich mit dezitierten IPs Domains - ohne Portangabe - auf die Services zugreifen wollte:
                  - hass.***.com
                  - ta.***.com
                  usw...

                  Nginx ist da bzgl. SSL einfach zu konfigurieren, überhaupt wenn der Domain-Registrar die APIs (für die DNS-Challenge) hat. Hetzner und 1und1 (unter vielen Anderen) können das.
                  Zuletzt geändert von lidl; 20.10.2023, 10:02. Grund: IPs durch Domain ersetzt

                  Kommentar


                    #10
                    Zitat von thehansa Beitrag anzeigen
                    Läuft so auf einer pfSense, die die Certs regelmäßig holt und intern verteilt.
                    Naja, ich habe vom HS selbst gesprochen, aber egal und danke für Deine externe Lösung.
                    Gruss Daniel

                    Kommentar


                      #11
                      thehansa interessanter Ansatz, muss nach dem Upload nicht auch noch ein Neustart des HS erfolgen um das Zertifikat zu „aktivieren“?

                      Mir gefällt der Ansatz von lidl - den NGINX kann man gegen bekannte CVE‘s regelmässig patchen. Den Homeserver mit seinem trägen Patchzyklus und eingesetzten Komponenten aus der Steinzeit möchte ich gar nicht direkt ins Internet hängen.

                      Kommentar


                        #12
                        Der HS startet den Webserver nach erfolgreichen Upload automatisch neu.
                        Rückmeldung auf den CURL -v: {"result": true, "restarting": true}

                        Damit ist das Zertifikat sofort aktiv.


                        ... natürlich hängt der HS nicht direkt im Netz. Das Zertifikat auf dem brauche ich nur für intern.

                        Kommentar


                          #13
                          Zitat von sti87 Beitrag anzeigen
                          den NGINX kann man gegen bekannte CVE‘s regelmässig patchen
                          Ja darum gings mir auch... Ich habe einen Single Point of Entry. Egal wieviele Services... an einer Stelle hab ich die komplette SSL-Verwaltung, die Hostnamen usw..

                          Kommentar

                          Lädt...
                          X