AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy SSL Verbindung
Thema durchsuchen
Ansicht
Themen-Optionen

Indy SSL Verbindung

Ein Thema von delphin06 · begonnen am 20. Jul 2008 · letzter Beitrag vom 23. Jul 2008
Antwort Antwort
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#1

Indy SSL Verbindung

  Alt 20. Jul 2008, 15:15
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:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
  with AContext.Connection do
  begin
    memo1.text:=AContext.Connection.IOHandler.ReadLn;
  end;
end;
Client:
Delphi-Quellcode:
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;
Ich habe mir nach der Anleitung die Zertifikat Dateien erstellt und mit in den Handlern angegeben.
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ß
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Indy SSL Verbindung

  Alt 20. Jul 2008, 18:33
Du verdeckst die ursprüngliche Fehlermeldung von Indy.
Deshalb folgende Änderung:
Delphi-Quellcode:
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;
So bekommst du die orginale Fehlermeldung (auf Englisch) noch dazu.
Und die wird dich hoffentlich auf die richtige Spur führen.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#3

Re: Indy SSL Verbindung

  Alt 20. Jul 2008, 18:50
naja is schöner aber bringt mich trotzdem nicht weiter. Die echte Exception kann ich ja lesen wenn ich das Debugge...

Im Projekt Client_test.exe ist eine Exception der Klasse EIdOSSLConnectError mit der Meldung 'Error connecting with SSL.' aufgetreten. Ehrlich gesagt ist das eine Sch** Fehlermeldung...weil das kann ja alles sein
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Indy SSL Verbindung

  Alt 20. Jul 2008, 19:13
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.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#5

Re: Indy SSL Verbindung

  Alt 20. Jul 2008, 19:24
Zitat von sx2008:
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
Und genau da geht das Problem schon wieder los...Bei mir sind nämlich die Indy sources schon vorcompiliert und ich kann somit im indy code keine breakpoints setzen, weil ich die *.pas nicht dazu habe.

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.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Indy SSL Verbindung

  Alt 20. Jul 2008, 23:35
Sourcecode kann man hier downloaden:
http://www.indyproject.org/Sockets/D...Indy10.DE.aspx
Ich habe da mal reingeschaut-die Sache ist relativ komplex.
Delphi-Quellcode:
// 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 Exception EIdOSSLConnectError enthält noch zwei weitere Informationen:
die Properties ErrorCode und RetCode.
Delphi-Quellcode:
  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]);
Da Indy Funktionen in OpenSSL aufruft, ist es wichtig, dass du die letzte Version von OpenSSL installiert hast.
Download hier: http://www.openssl.org/related/binaries.html
Also hast du jetzt zwei Dinge zu tun: sicherstellen, dass OpenSSL 0.98g auf deinem Rechner ist und den ErrorCode/RetCode rausgeben.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#7

Re: Indy SSL Verbindung

  Alt 21. Jul 2008, 17:02
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ß
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#8

Re: Indy SSL Verbindung

  Alt 22. Jul 2008, 18:21
Ich dreh hier bald durch

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.
  Mit Zitat antworten Zitat
delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#9

Re: Indy SSL Verbindung

  Alt 23. Jul 2008, 16:37
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ß
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.
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