Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPServer/TCPClient SSL Verifizieren (https://www.delphipraxis.net/212876-tcpserver-tcpclient-ssl-verifizieren.html)

DelTurbo 17. Apr 2023 13:06

TCPServer/TCPClient SSL Verifizieren
 
Hi,
ich weiß nicht ob mein Gedankengang falsch ist, aber ich finde weder hier noch bei Google etwas über meine frage.

Ich möchte einen TCPServer mit Selbst erstellten Zertifikaten erstellen. Das klappt auch. Ich kann mit einem TCPClient (alles Indy) mit SSL drauf Connecten.

Nun zu meiner eigentlichen Frage. Ist es möglich das nur Clients mit dem richtigen Zertifikat Connecten können? Wenn ja, wie geht das? Wenn nicht, dann habe ich falsch gedacht.

Es wird natürlich zusätzlich User und Pass erwartet. Wie gesagt, das klappt. Aber ich brauch dem Client gar kein Zertifikat mitgeben und er Conncted fröhlich vor sich hin.

Vielen dank im Voraus

Nachtrag: Die Zertifikate erstelle ich hiermit.

Klaus01 17. Apr 2023 13:15

AW: TCPServer/TCPClient SSL Verifizieren
 
.. die Abweisung sollte doch auf dem Server erfolgen.
Bei dem TIdServerIOHandlerOpenSsl gibt es das Event onVerifyPeer.
Dort kannst Du das Zertifikat auslesen und gegebenenfalls ablehnen.

Grüße
Klaus

DelTurbo 17. Apr 2023 13:19

AW: TCPServer/TCPClient SSL Verifizieren
 
Hast du da vielleicht einen Link zu einem Beispiel. Ich weiß z.b. auch nicht wie ich den ServerSSLIOHandler einstellen soll. Bei mir läuft er da nicht rein.

Ich habe das beispiel genommen.

DelTurbo 17. Apr 2023 14:27

AW: TCPServer/TCPClient SSL Verifizieren
 
Also,
ich habe es nur soweit das wenn der Client Connected der Server in IdServerIOHandlerSSLOpenSSL1VerifyPeer springt. Aber nun stehe ich wieder auf dem schlauch. Keine ahnung was ich da machen soll. Im moment gebe ich einfach True zurück. Das soll er aber nur zurückgeben wenn es passt. Die sache die in Certificate stehen verstehe ich nicht. Leider. Muss man da nochwas umrechnen? Ist das überhaupt richtig das ich beiden (Client und Server) die gleichen Zertifikate mitgebe?

Google bringt mich nicht weiter. Wenn ich die antwort hätte, hätte ich die schon gepostet.

Klaus01 17. Apr 2023 14:40

AW: TCPServer/TCPClient SSL Verifizieren
 
im onVerifyPeer gibt es doch den Parameter Certificate diese hat das Property FingerprintAsString
das könntest Du doch mit dem Fingerprint des Client Certifcate vergleichen.

DelTurbo 17. Apr 2023 15:12

AW: TCPServer/TCPClient SSL Verifizieren
 
Hi,
erstmal danke das mir helfen möchtest. Dort Certificate.FingerprintAsString ist er als String drin. Aber ich habe vom Client keinen Fingerprint damit ich vergleichen könnte.

Ich frage einfach mal, hast du keine Batch oder link zu einer Batch (kann auch Unix sein) um die Zertifikate zu erstellen? Ich komme so einfach nicht weiter. Man findet aber auch kein Beispiel im Netz. Bin ich denn der einzige der das machen möchte? Würde mich wundern.

Es würde um Server Zertifikat und Client Zertifikat gehen. Ich weiß nicht ob es die gleichen sind.

mjustin 17. Apr 2023 15:16

AW: TCPServer/TCPClient SSL Verifizieren
 
Zitat:

Zitat von DelTurbo (Beitrag 1521149)
Ist das überhaupt richtig das ich beiden (Client und Server) die gleichen Zertifikate mitgebe?

Zu Testzwecken kann man das zwar, aber das Server-Zertifikat braucht weiterzugeben, denn der Client erhält es 'automatisch' beim Verbindungsaufbau zugesandt (und kann es dann validieren).

Das Client-Zertifikat muss man dem Client immer bereitstellen, denn dieser muss es beim Verbindungsaufbau dem Server vorweisen. Es kann so die Anmeldung mit Benutzer/Passwort ersetzen.

mjustin 17. Apr 2023 15:24

AW: TCPServer/TCPClient SSL Verifizieren
 
Zitat:

Zitat von DelTurbo (Beitrag 1521151)
Hi,
erstmal danke das mir helfen möchtest. Dort Certificate.FingerprintAsString ist er als String drin. Aber ich habe vom Client keinen Fingerprint damit ich vergleichen könnte.

Zertifikate und deren Fingerprints lassen sich unter Windows einfach in den Dateieigenschaften nachschauen, oder über die Kommandozeile.
Daher einfach das Client-Zertifikat im Explorer öffnen.

Alternativ: https://learn.microsoft.com/de-de/do...-a-certificate
(das setzt jedoch voraus, dass das Zertifikat im Zertifikatsspeicher abgelegt wurde)

DelTurbo 17. Apr 2023 15:25

AW: TCPServer/TCPClient SSL Verifizieren
 
Hi,
die frage ist immernoch wie erstelle ich Server und Client Zertifikat. Klar, mit openssl, aber mit welchen Parametern?

Sorry wenn ich dumm fragen muss. Aber das ist das erstmal das ich einen Client Verifizieren möchte.

Klaus01 17. Apr 2023 15:26

AW: TCPServer/TCPClient SSL Verifizieren
 
vom Format sind die Client- und ServerZertifikate gleich.
Erstellen kannst Du sie mit openssl.

Delphi-Quellcode:
   cmdParameter := format('req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout %s -out %s '+
                             '-subj "/C=DE/L=%s/O=%s/CN=%s" '+
                             '-config "%s"',[certFolder+keyFileName, certFolder+certFileName,
                                             '.', '.',
                                             '.'),
                                             openSslConfFile]);
    end;
  errorCode := shellExecute(0, 'open', pChar(openSslFolder+'openSSL.exe'), pchar(cmdParameter), nil, SW_Hide);

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz