![]() |
Indy SSL Verbindung
Hi
Das gibts gar nich ich schaffe es einfach nicht eine SSL Verbindung aufzubauen. Es gibt aber auch nirgendwo was vernünftiges dazu zu finden. Ich hab mir nur um erstmal überhaupt n bisschen mit SSL zu testen eine Client Anwendung und eine Server Anwendung geschrieben. Der Client besteht nur aus einer Form mit einem Memo (Zum eingeben des Textes der an den Server geschickt werden soll) und einem Senden Button. Dazu habe ich noch die IdTCPClient und IdSSLIOHandlerSocketOpenSSL mit drauf gepackt. Der Server ist ähmlich aufgebaut nur halt ohne button und einem Memo das den vom Client gesendeten Text anzeigen soll. Zudem ist noch die IdTCPServer und IdServerIOHandlerSSLOpenSSL mit dabei. Ohne die SSLHandler klappt es einwandfrei Code: Server:
Delphi-Quellcode:
Client:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin with AContext.Connection do begin memo1.text:=AContext.Connection.IOHandler.ReadLn; end; end;
Delphi-Quellcode:
Ich habe mir nach der
procedure TForm1.Button1Click(Sender: TObject);
begin with IdTCPClient1 do try Connect; try IdTCPClient1.IOHandler.WriteLn(memo1.text); ShowMessage('Gesendet.'); finally Disconnect; end; except on E:Exception do begin if e is EIdOSSLCouldNotLoadSSLLibrary then ShowMessage('SSL Library nicht gefunden!') else if e is EIdOSSLConnectError then ShowMessage('Fehler beim Verbinden mit SSL!') else if e is EIdOSSLLoadingKeyError then ShowMessage('Fehler beim Verbinden mit SSL (kein Passwort)!') else ShowMessage('Fehler beim Verbinden!'); end; end; end; ![]() Beim Server gibts keine Probleme. Wenn ich aber versuche mit dem Client was zu schicken, dann kommt immer die Meldung "Fehler beim Verbinden mit SSL!" Weiß einer was ich da ganu einstellen muss? Wahrscheinlich liegt es wieder an so einer Kleinigkeit... Gruß |
Re: Indy SSL Verbindung
Du verdeckst die ursprüngliche Fehlermeldung von Indy.
Deshalb folgende Änderung:
Delphi-Quellcode:
So bekommst du die orginale Fehlermeldung (auf Englisch) noch dazu.
except
on E:Exception do begin if e is EIdOSSLCouldNotLoadSSLLibrary then E.Message := 'SSL Library nicht gefunden! - ' + E.Message else if e is EIdOSSLConnectError then E.Message := 'Fehler beim Verbinden mit SSL! - ' + E.Message else if e is EIdOSSLLoadingKeyError then E.Message := 'Fehler beim Verbinden mit SSL (kein Passwort)! - ' + E.Message else E.Message := 'Fehler beim Verbinden! - ' + E.Message; ShowMessage(E.Message); end; end; Und die wird dich hoffentlich auf die richtige Spur führen. |
Re: Indy SSL Verbindung
naja is schöner aber bringt mich trotzdem nicht weiter. Die echte Exception kann ich ja lesen wenn ich das Debugge...
Delphi-Quellcode:
Ehrlich gesagt ist das eine Sch** Fehlermeldung...weil das kann ja alles sein
Im Projekt Client_test.exe ist eine Exception der Klasse EIdOSSLConnectError mit der Meldung 'Error connecting with SSL.' aufgetreten.
|
Re: Indy SSL Verbindung
Ja, da hätte Indy ruhig etwas mehr Informationen liefern können.
Du hast ja die Exceptionklasse (EIdOSSLConnectError) und kannst damit im Sourcecode von Indy suchen. Wenn du Glück hast, gibt es nur ein oder zwei Stellen an denen diese Exception ge"raised" wird. Wenige Zeilen davon setzt du deinen Breakpoint und kannst so genauer verfolgen was da passiert. (In den Projektoptionen auf Seite Compiler die Option "Mit Debug DCU's" aktivieren) Es kommt jetzt natürlich auf deine Erfahrung an und vorallem wie komplex der Indy Sourcecode an dieser Stelle ist. |
Re: Indy SSL Verbindung
Zitat:
Kann mir denn keiner sagen, was ich bei den SSLHandlern alles einstellen muss? So viel Einstellungen gibt es da ja nicht. Ich weiß nur nich wofür die alle sind. |
Re: Indy SSL Verbindung
Sourcecode kann man hier downloaden:
![]() Ich habe da mal reingeschaut-die Sache ist relativ komplex.
Delphi-Quellcode:
Die Exception EIdOSSLConnectError enthält noch zwei weitere Informationen:
// hier wird die Funktion "SslConnect" aus einer externen DLL (OpenSSL) aufgerufen
// siehe: [url]http://www.openssl.org/docs/ssl/SSL_connect.html#[/url] error := IdSslConnect(fSSL); if error <= 0 then begin EIdOSSLConnectError.RaiseException(fSSL, error, RSSSLConnectError); // das ist "deine" Exception end; die Properties ErrorCode und RetCode.
Delphi-Quellcode:
Da Indy Funktionen in OpenSSL aufruft, ist es wichtig, dass du die letzte Version von OpenSSL installiert hast.
else if e is EIdOSSLConnectError then
E.Message := Format('Fehler beim Verbinden mit SSL! - %s'#13#10+ 'ErrorCode=%d, RetCode=%d', [E.Message, EIdOSSLConnectError(E).ErrorCode, EIdOSSLConnectError(E).RetCode]); Download hier: ![]() Also hast du jetzt zwei Dinge zu tun: sicherstellen, dass OpenSSL 0.98g auf deinem Rechner ist und den ErrorCode/RetCode rausgeben. |
Re: Indy SSL Verbindung
Danke für die Mühe, aber irgendwie will das nich so richtig...
Ich hab ja Delphi 2007 und da ist Indy bereits vorinstalliert. Nur sind halt nich die sources dabei sondern nur die dcu's. Jetzt hab ich mir den Indy Source runtergeladen und versucht zu installieren aber klappt nicht. Wenn ich das mit der Batch versuche kommt der Fehler "Compiler not found". Wenn ich versuche über Delphi das Package zu installieren, dann kommen da auch wieder Fehler. Ich hab keine Ahnung welches ich da installieren muss... Is aber auch egal. Ich hab das mit dem Errorcode versucht aber dann kann ichs nicht mehr compilieren, weil der Errorcode nicht kennt. Die neusten OpenSSL DLLs hab ich auf jeden Fall (0.9.8h) speziell die für Indy hier aus dem Forum. Bin ich denn der einzigste der hier mal SSL verwenden will? Das muss doch schonmal jemand gemacht haben. Wenn ich nur wüsste wo das Problem ist. Ich werd nochmal ein bisschen probieren. Wenn einer was weiß bitte melden. Gruß |
Re: Indy SSL Verbindung
Ich dreh hier bald durch :spin2:
Jetzt hab ich schon so viel Zeit dafür vergeudet und bin immer noch nicht weiter. Ich glaube so langsam das es n Fehler in den Indys ist. Mal gucken ob ich das irgendwie aktualisiert bekomme die Indy Version. |
Re: Indy SSL Verbindung
Endlich geschafft!
Habe jetzt Indy 10 aus Delphi 2007 rausgeschmissen und indy 9 installiert. Jetzt funktioniert alles einwandfrei! Jetzt kann ich endlich weiter machen *freu* Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz