SSL-Zertifikat auf Gültigkeit überprüfen

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Jue.

    SSL-Zertifikat auf Gültigkeit überprüfen

    Hi

    Ich habe den Auftrag, ein Tool zu schreiben, welches das SSL-Zertifikat eines Servers auf Gültigkeit überprüft. Habe das ganze dann auch mit Java realisiert, was wunderbar geklappt hat. Jedoch soll das Programm den Kunden zum Download angeboten werden, wo auch schon das Problem auftritt: Tool + Java Runtime = ~10MB.. Und das ist nicht zumutbar.

    Deshalb will ich jetzt abklären, ob man dasselbe auch mit VB realisieren kann, da die Grösse der Programms somit unter einem MB bleiben würde.

    Ich hoffe, ihr könnt mir ein paar Tips geben, da mein Visual Basic aus der Schulzeit nur für simple Dinge ausreicht..

    Die Anforderungen sind eigentlich sehr simpel:
    -Verbinde zu einem SSL-Server
    -Überprüfe, ob das vom Server gelieferte Zertifikat gültig ist und von einer Authorisierten Stelle herausgegeben wurde

    Natürlich erwarte ich kein kompletter Code, nur Hinweise und Links auf Lösungen/Lösungswege.

    Vielen Dank für eure Hilfe!

    Greets
    Also einen Link direkt habe ich nicht, aber ich hätte eine Vorgehenesweise:

    1. mit dem Winsock-Objekt zum gewünschten Server auf gewünschten Port connecten (Tut: activevb.de/tutorials/tut_winsock_control/winsock_con.html)
    2. die ankommenden Daten entschlüsseln (weißt du wie das geht? ich hab von kryptographie wenig ahnung ...)
    3. daten verarbeiten


    Wo ist denn genau dein Problem? Bei 1 könnt ich dir helfen. 2 weiß ich praktisch gar nichts (wenn du mir da was erklären köntest? bitte?). 3 wüst ich auch nicht auf Anhib, da wird sich aber was im Inet finden lassen ... RFC oder so.

    Jue ;)
    Also das Aufbauen der Verbindung ist kein Problem.. Es geht wirklich darum, zu schauen, ob der Client, der das Testprogramm ausführt auch wirklich das richtige SSL-Zertifikat einer Webseite erhält. Dies wäre z.B. nicht der Fall, wenn sich ein "man in the middle" als proxy dazwischenschaltet..
    Ich hoffe, du verstehst was ich meine.
    Also noch einmal in einem Satz zusammengefasst:
    Wie überprüfe ich, ob das SSL-Zertifikat das ich erhalte auch mit der Webseite übereinstimmt, die ich aufgerufen habe?
    Also:
    Ich hab mich mit SSL ein wenig vertraut gemacht und verstehe jetzt so die Grundzüge. Für dein Problem musst du wissen, wie das Handshake-Protokoll von SSL funktioniert. Dafür würd ich mir die RFC von SSL zur Hilfe ziehen. Was ich so gelesen habe ist, dass das Zertifikat bei s.g. "Server Hello" übertragen wird.
    Und, der Mann in der Mitte kann euch doch bei einer verschlüsselten Verbindung nichts anhaben?! Die einzelnen Pakete werden ja sogar mit einem Hash-Wert ausgestattet, der die kleineste Veränderung des Paketes auffliegen lassen würde. Der MittelMann ist auch nicht in der Lage, den Datenstrom zu entschlüsseln! Es sei denn er hat eine riesige Menge glück!!!

    Ich weiß jez nicht, ob ich dir was neues erzählt habe, ich wollt nur mal sicher stellen, ob es jetzt dein Problem ist das Zertifikat aus dem "Server Hello" zu entnehmen und auszuwerten, oder willst du wirklich wissen, ob da jetzt ein Computer "in der Mitte steht". Dafür wüsste ich aber keine Lösung ...

    Jue ;)
    Also, noch einmal zur Veranschaulichung:
    Kunde loggt sich auf unser Finanzportal ein (seine Host-Datei wurde z.B. verändert, dass www.unser-finanzportal.ch (was übrigens nur n Beispiel ist) verbindet und das SSL-Zertifikat anschaut und prüft, ob es sich um den "echten" Server handelt oder um einen Proxy eines mutmasslichen Man-In-The-Middle.

    Meine Aufgabe: Zertifikat beim Aufbau der Verbindung öffnen und prüfen ob es auch wirklich das Zertifikat des "echten" Servers ist.

    Wie gesagt, in Java war das überhaupt kein Problem, hatte da sogar eine umfangreiche SSL-Library, welche das alles für mich geprüft hat..

    Ich hoffe, dass es so was ähnliches auch in VB gibt, weil ich es sonst mit C++ machen müsste, wo ich noch weniger Kenntnisse habe..