Self Signed Certificate



  • Ich bastel mir gerade für ein Programm eine SSL Verbindung und muss mir nun Gedanken machen, wie ich das mit dem Zertifikat mache. Mir ist klar das ich auf dem Server ein Private Key und ein Zertifikat brauche.

    Kann ich mit OpenSSL ein Self Signed Certificate machen, das nicht abläuft? Ich mein gesehen zu haben, dass man festlegen kann, wann es abläuft (also in Tagen). Wie hoch könnte diese Zahl sein? 3000 Tage wäre ja schon viel, aber ich würde das Certificate gerne dauerhaft benutzen.

    Außerdem noch eine andere Frage, wo ich keine Lösung zu gefunden habe. Wenn das Zertifikat Self Signed ist und ich es im Clientprogramm einbaue (Public Key), würde ich nicht dann beim verbinden mit dem Server eine Fehlermeldung kriegen, dass die Gegenstelle untrusted ist? Ich hoffe ihr wisst was ich meine.

    Ich habe jetzt schon sehr viel gelesen, aber bin nicht wirklich schlauer geworden.

    Der Grund warum das Zertifikat nicht ablaufen soll, ist der, dass ich es gerne mit in die exe Datei einbetten will.

    Tut mir leid wenn ich etwas undeutlich und verwirrend bin, aber so sieht es auch gerade in meinem Kopf aus.

    Das grundlegende Verständnis von SSL ist vorhanden, aber ich kriege das mit den Zertifikaten nicht in meinen Kopf.



  • Ich muss nochmal stören. Leider verstehe ich es immer noch nicht. Es geht um eine Application die einen Server und einen Client hat. Da ich SSL verwende muss der Server einen Private Key haben und ein Zertifikat. Der CLient muss aber auch einen Key haben, nämlich den Public Key. Wie bekommt der Client den? Muss ich mit Openssl dann aus dem Privaten den Public generieren?

    Alles Tutorials die ich bisher gefunden habe, behandeln irgendwie nicht mein Problem. Kann mir jemand helfen?



  • Der Public Key steht im Zertifikat und wird beim Verbindungsaufbau vom Server an den Client geschickt. Der Client validiert das Zertifikat gegen ein Root-Zertifikat und kann dann davon ausgehen das der Public-Key aus einer vertrauenswürdigen Quelle kommt. Ohne Zertifikat könnte ein man in the middle einfach den Public-Key durch seinen eigenen ersetzen und die Kommunikation mitlesen.

    Du kannst natürlich ein eigenes Root Zertifikat erstellen und es in deine Anwendung packen. Mir ist kein Limit für das Ablaufdatum bekannt (habe es aber auch noch nicht ausprobiert). Es macht aber grundsätzlich schon Sinn eins zu setzen, da aktuelle Verschlüsselungsverfahren/Schlüssellängen nicht ewig ausreichen werden und man damit den Client irgendwann zum Update zwingt, wenn abzusehen ist das kein ausreichender Schutz mehr gewährleistet werden kann.



  • Hört sich so an, dass ich auf dem Server dann einen Private Key brauche, ein Root Zertifikat und ein normales Zertifikat. Ist das richtig?



  • Bennisen schrieb:

    Hört sich so an, dass ich auf dem Server dann einen Private Key brauche, ein Root Zertifikat und ein normales Zertifikat. Ist das richtig?

    Zum Betreiben brauchst du auf dem Server den private key und das normale Zertifikat. Der Client braucht das Root Zertifikat.

    Es gibt im Prinzip 3 Akteure:

    1. Certificate Authory (CA): Erzeugt eigenen private key und Root Zertifikat (self signed).
    2. Server: Erzeugt eigenen private key und bekommt ein von der CA signiertes Zertifikat.
    3. Client: Hat das Root Zertifikat und kann damit die Signatur des Zertifikats des Servers überprüfen.



  • ich verstehe nur nicht, warum sowas in keinem tutorial beschrieben wird. alles was ich bisher gelesen habe, dreht sich nur um einen key und ein cert. das alles was ich bisher gelesen habe, wäre für einen webserver sicher aktzeptabel, aber so komme ich nicht weiter.

    edit: Nach ewig langem suchen hab ich nun doch eine Lösung gefunden.


Log in to reply