FPC TCP Socket Library (fcl-net)

Rund um die LCL und andere Komponenten
PascalDragon
Beiträge: 829
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: FPC TCP Socket Library (fcl-net)

Beitrag von PascalDragon »

Nimral hat geschrieben:
Fr 24. Sep 2021, 12:00
Bede Dateien (ssleay32.dll und libeay32.dll) gehören seit gefühlt einem halben Jahrhundert zum Standardlieferumfang von Windows.
Nein, das war erst mit einem der Windows 10 Updates.
FPC Compiler Entwickler

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: FPC TCP Socket Library (fcl-net)

Beitrag von Nimral »

Selbst wenn es so wäre ... ich habe die m.E. neueste Windows 10 Version (Version 10.0.19043.1237), und beide Dateien liegen bereit unter c:\WIndows\SysWOW64, was m.E. OK ist, weil ich 32 Bit WIndows Programme erzeuge mit einem 32 Bit Lazarus. Ich bin allerdings etwas unsicher, weil ich eigentlich (außer Konkurrenz) auch die 64-Bit Versionen (die sinniger Weise übrigens auch libeay32.dll und ssleay32.dll heißen ...) in Windows\System32 erwartet hätte, die sind aber nicht vorhanden.

Die Fehlermeldung scheint aber, soweit ich mich inzwischen in die OpenSSL Dokus gekämpft habe, eher darauf hinzuweisen, dass meiner Maschine nicht die SSL Libraries fehlen, sondern dass ein SSL Zertifikat fehlt. Das würde dann durchaus Sinn machen, ich war bisher ja stets nur SSL Client, aber noch nie SSL Server.

Im Moment grabe ich mal in die Richtung, ein SSL Zertifikat (self-signed) zu erzeugen. Erste Frage: wie schaut das aus, wie baut man sich eins (gab es da nicht mal ein Tool names certutil im Microsoft SDK?), was muss drinnen stehen, gibt es Verschiedene je nachdem ob man SSL Server oder Client spielen will ... Fragen über Fragen, die ich eigentlich gar nicht stellen wollte, und die Zeit vertickt mal wieder unerbittlich ...

Armin.

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: FPC TCP Socket Library (fcl-net)

Beitrag von Nimral »

Ok, ich lag richtig. Mit den beiden dlls, die sonst oft für Zicken gut sind, hat das Problem diesmal nichts zu tun.

Der Autor von lNet hat in der Demo eine TLSSLSessionComponent ins Mainform gesetzt, und dort die Felder "CAFile" und "Keyfile" für das SSL Zertifikat und das Private Key File ausgefüllt. Sie heißen bei ihm "cert" und "pkey", und er hat die Files nicht mitgegeben. Die SSL Komponente lädt die Files aber bei der Initialisierung, auch wenn SSL an sich nicht eingeschaltet ist --> Exception. Die dabei ausgelöste Exception tritt dann leider auch noch dem Debugger auf die Füße, der dann seinerseits fatal crasht.

Den Debugger bekam ich erst Mal ans Laufen, als ich in den Projekt-Optionen unter "Debug" den Debug-Info-Typ von -gw3 auf -gw2 geändert habe. Danach konnte ich immerhin den Text der Exception lesen, und das legte dann die heiße Spur.

Um das eigentliche Problem mit den fehlenden Files zu lösen kann man entweder

- die beiden Felder CAFile und KeyFile in der Komponente TLSSLSessionComponent leer machen (und SSL nicht verwenden), oder in Gottes Namen die beiden Dateien mit OpenSSL erzeugen lassen und im Programmverzeichnis speichern.
openssl genrsa -out pkey 1024
openssl req -new -x509 -key pkey -out cert -days 1095


Möge das mal jemandem helfen ...

Armin.
2021-09-24 15_30_13-Einstellungen.png
2021-09-24 15_30_13-Einstellungen.png (17.67 KiB) 635 mal betrachtet

Antworten