AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

INDY 9 und SSL

Ein Thema von night · begonnen am 26. Aug 2009 · letzter Beitrag vom 28. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#1

INDY 9 und SSL

  Alt 26. Aug 2009, 04:28
Hallo,

ich benutze Turbo Delphi 2006 und INDY9.
Ich habe schon richtig viele Threads durchgelesen und viel ausprobiert, aber ich bekomme es nicht zum laufen.
Ich erhalte immer nur die Meldung "Exception-Klasse EIdOSSLCouldNotLoadSSLLibrary mit Meldung 'Could not load SSL library.'"

Ich habe schon verschiedene DLL'S runtergeladen, aber ich es läuft einfach nicht
Endweder sind die DLL nur für INDY 10 oder ich muss eine IdSSLOpenSSLHeaders.pas in ein Verzeichnis kopieren, das es bei mir nicht gibt.

Wäre super, wenn mir jemand helfen könnte

Mein Codingb:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  idSSL := TIdSSLIOHandlerSocket.Create(self);
  idSSL.SSLOptions.CertFile := 'ra.cer';
  idSSL.SSLOptions.VerifyDepth := 2;
  idSSL.SSLOptions.Mode := sslmClient;
  idSSL.SSLOptions.Method := sslvSSLv23;

  idHttp := TidHttp.Create(self);
  idHttp.Request.ContentType := 'application/x-www-form-urlencoded ';
  idHttp.IOHandler := self.idSSL;
  idHttp.AllowCookies := true;
  idHttp.HandleRedirects := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  list: TStringlist;
begin
  list:=TStringList.Create;
  try
    list.Add('login='+TIdURI.ParamsEncode(ENick.Text));
    list.Add('password='+TIdURI.ParamsEncode(EPw.Text));
    Memo1.Lines.Add(idHttp.Post(API_LOGIN,list));
  finally
    sList.Free;
  end;
end;
Das muss doch auch mit INDY 9 möglich sein.

Viele Grüße
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.365 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: INDY 9 und SSL

  Alt 26. Aug 2009, 05:21
Warum ersetzt du nicht einfach deine Indy-Version durch die neuere Version 10? Indy 9 ist ja seit 5 Jahren nicht mehr aktualisiert worden...

Und für Indy 10 musst du ja nur die Zip-Datei herunterladen (z.B. von hier) und den Bibliothekspfad auf lib\indy9 entfernen und stattdessen die Pfade hinzufügen, in denen die neuen entpackten Dateien liegen.

Die OpenSSL-DLLs findest du u.a. hier.

Zitat von night:
Das muss doch auch mit INDY 9 möglich sein.
Mag sein, du kannst es mit den DLLs ja versuchen (oder mit debuggen wo genau das Problem liegt), aber was gibt es für einen Grund noch Indy 9 zu benutzen?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: INDY 9 und SSL

  Alt 26. Aug 2009, 06:24
Wow super, um die Zeit habe ich gar nicht mit einer Antwort gerechnet

Auf welchen Pfad muss ich das genau ändern? Ich habe verschiedenes getestet, aber es kommt immer nur:
Datei nicht gefunden: 'IdSSLOpenSSL.dcu'

Wenn ich einfach Indy9 durch Indy10 ersetze, das ist im selben Ordner schon vorhanden, dann kommt:
Undefinierter Bezeichner: 'TIdSSLIOHandlerSocket'

Viele Grüße
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.365 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: INDY 9 und SSL

  Alt 26. Aug 2009, 07:21
Also, wenn du Indy 10 entpackst, dann hat dieses ja verschiedene Unterordner. Die Ordner Core, Protocols, Security, SuperCore und System habe ich in den Bibliothekspfad aufgenommen. Ob man die immer alle braucht, weiß ich nicht, jedenfalls funktioniert es so.
Wichtig ist, dass der alte Pfad im Delphiverzeichnis nicht mehr im Pfad ist.

Im Code sieht das dann so aus (inkl. SSL und Cookies):
Delphi-Quellcode:
uses
  IdHttp, IdSSLOpenSSLHeaders, IdSSLOpenSSL, IdCookieManager;

procedure TFormX.ButtonXClick(Sender: TObject);
var
  IdHttpLoader: TIdHttp;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  CookieManager: TIdCookieManager;
begin
  IdSSLOpenSSLHeaders.Load;

  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create;
  try
    CookieManager := TIdCookieManager.Create;
    try
      IdHttpLoader := TIdHttp.Create;
      try
        IdHttpLoader.CookieManager := CookieManager;
        IdHttpLoader.IOHandler := SSLIOHandler;
        ...
Und im Verzeichnis der Exe befinden sich die libeay32.dll und die ssleay32.dll, weiter nix.

// EDIT:
Bei dir ist ja die Erzeugung der Objekte separat, du musst da statt deinem TIdSSLIOHandlerSocket ein TIdSSLIOHandlerSocketOpenSSL Objekt erstellen. Weil es ja um OpenSSL geht. Ob man das IdSSLOpenSSLHeaders.Load und hinterher das IdSSLOpenSSLHeaders.Unload braucht (oder ob es automatisch auch geht), weiß ich gerade nicht mehr.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: INDY 9 und SSL

  Alt 26. Aug 2009, 16:15
Hmm, das ganze scheint mit der Turbo Version nicht so ganz zu klappen.

Zitat:
Die Ordner Core, Protocols, Security, SuperCore und System habe ich in den Bibliothekspfad aufgenommen.
Habe ich auch gemacht und ich habe den Pfad zu INDY9 rausgenommen.
Jetzt findet er die IdHttp, IdSSLOpenSSL nicht mehr und es kommt die Meldung

IdSSLOpenSSL.pas(861): E2003 Undefinierter Bezeichner: 'IdSslAddAllCiphers'
IdSSLOpenSSL.pas(862): E2003 Undefinierter Bezeichner: 'IdSslAddAllDigests'

Ich brauch glaub ich die Installationsdatei von Turbo Delphi, um die Indys ändern zu können, oder liege ich damit falsch?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.365 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: INDY 9 und SSL

  Alt 26. Aug 2009, 21:34
Zitat von night:
Hmm, das ganze scheint mit der Turbo Version nicht so ganz zu klappen.
Doch, klappt bei mir problemlos.

Zitat von night:
Jetzt findet er die IdHttp, IdSSLOpenSSL nicht mehr und es kommt die Meldung
Wie kann der Compiler die Datei nicht finden und gleichzeitig darin einen Fehler anzeigen?
Ich finde das in Indy 10 gar nicht diese Zeilen (ich lade einmal die aktuellste Version nochmal).

Bist du sicher, dass da nichts mehr von Indy 9 im Pfad ist?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: INDY 9 und SSL

  Alt 27. Aug 2009, 06:54
Hi,
so INDY 10 läuft jetzt. Ich wollte es über die Installexe ändern, das wollte es aber nicht(irgendwas mit choose radiobutton, hatte ich o_O). Deshalb habe ich es deinstalliert und wieder installiert und jetzt gehen die Indy10

Jetzt kommt noch ein Read Timeout Fehler... aber das schau ich mir morgen an.

Zitat von jaenicke:
Zitat von night:
Jetzt findet er die IdHttp, IdSSLOpenSSL nicht mehr und es kommt die Meldung
Wie kann der Compiler die Datei nicht finden und gleichzeitig darin einen Fehler anzeigen?
Ja darüber hatte ich mich auch gewundert ... aber strg+linksklick ging nicht mehr und die waren rot unterstrichen...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.365 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: INDY 9 und SSL

  Alt 27. Aug 2009, 07:59
Zitat von night:
Ja darüber hatte ich mich auch gewundert ... aber strg+linksklick ging nicht mehr und die waren rot unterstrichen...
Das ist egal. Es geht ausschließlich um das was der Compiler ausspuckt. Diese Unterstreichungen sind nur als Hinweise zu sehen, die sind öfter auch mal falsch.

Das mitgelieferte Indy 10 ist leider auch schon relativ alt und die mitgelieferte Version hat einen Fehler, der verhindert, dass du komprimierte Seiten abrufen kannst (um genau zu sein fehlt die entsprechende Unit). Aber wenn du das neue nicht zum Laufen bekommst, gehts ja nicht anders. Bei mir funktioniert die aktuelle Version problemlos mit Turbo Delphi in einem frischen virtuellen PC.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: INDY 9 und SSL

  Alt 27. Aug 2009, 23:14
Wärst du so nett und würdest mir mal zeigen, was du alles eingetragen hast?
(das n für neu hinter indy10 habe ich gemacht, also so heißt der Ordner )
Ich habe folgendes:

Bibliothekspfad
$(BDS)\lib;$(BDS)\Imports;$(BDS)\indy10n\Lib\Protocols;$(BDS)\indy10n\Lib\System;$(BDS)\indy10n\Lib\SuperCore;$(BDS)\indy10n\Lib\Core Sunchpfad
$(BDS)\source\Win32\vcl;$(BDS)\source\Win32\rtl\common;$(BDS)\source\Win32\rtl\sys;$(BDS)\source\Win32\rtl\win;$(BDS)\source\Win32\WebSnap;$(BDS)\source\ToolsAPI;$(BDS)\source\Win32\IBX;$(BDS)\source\Win32\Internet;$(BDS)\source\Win32\Property Editors;$(BDS)\source\Win32\soap;$(BDS)\source\win32\xml;$(BDS)\source\Win32\db;$(BDS)\source\Win32\Decision Cube;$(BDS)\indy10n\Lib;$(BDS)\indy10n\Lib\Protocols;$(BDS)\indy10n\Lib\System;$(BDS)\indy10n\Lib\SuperCore;$(BDS)\indy10n\Lib\Core und Debug DCU Pfad

$(BDS)\lib\Debug;$(BDS)\indy10n\Lib\Protocols;$(BDS)\indy10n\Lib\System;$(BDS)\indy10n\Lib\SuperCore;$(BDS)\indy10n\Lib\Core Ich habe schon hin und her probiert, aber die aktuellen Indys wollen nicht. Diese Fehler treten auf:
Delphi-Quellcode:
[Pascal Fehler] IdSSLOpenSSL.pas(861): E2003 Undefinierter Bezeichner: 'IdSslAddAllCiphers'
[Pascal Fehler] IdSSLOpenSSL.pas(862): E2003 Undefinierter Bezeichner: 'IdSslAddAllDigests'
[Pascal Fehler] IdSSLOpenSSL.pas(885): E2010 Inkompatible Typen: 'Integer' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(1559): E2009 Inkompatible Typen: 'Unterschiede in der Aufrufkonvention'
[Pascal Fehler] IdSSLOpenSSL.pas(1580): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(1591): E2003 Undefinierter Bezeichner: 'TSSL_CTX_set_verify_callback'
[Pascal Fehler] IdSSLOpenSSL.pas(1596): E2035 Nicht genügend wirkliche Parameter
[Pascal Fehler] IdSSLOpenSSL.pas(2045): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2045): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2055): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA1'
[Pascal Fehler] IdSSLOpenSSL.pas(2055): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2055): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2065): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA224'
[Pascal Fehler] IdSSLOpenSSL.pas(2065): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2066): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2066): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2074): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA224'
[Pascal Fehler] IdSSLOpenSSL.pas(2074): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2083): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA256'
[Pascal Fehler] IdSSLOpenSSL.pas(2083): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2084): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2084): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2092): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA256'
[Pascal Fehler] IdSSLOpenSSL.pas(2092): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2101): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA386'
[Pascal Fehler] IdSSLOpenSSL.pas(2101): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2102): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2102): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2110): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA386'
[Pascal Fehler] IdSSLOpenSSL.pas(2110): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2119): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA512'
[Pascal Fehler] IdSSLOpenSSL.pas(2119): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2120): E2010 Inkompatible Typen: 'Byte' und 'Char'
[Pascal Fehler] IdSSLOpenSSL.pas(2120): E2010 Inkompatible Typen: 'PUInteger' und 'Cardinal'
[Pascal Fehler] IdSSLOpenSSL.pas(2128): E2003 Undefinierter Bezeichner: 'IdSslEvpSHA512'
[Pascal Fehler] IdSSLOpenSSL.pas(2128): E2008 Inkompatible Typen
[Pascal Fehler] IdSSLOpenSSL.pas(2139): E2018 Record, Objekt oder Klassentyp erforderlich
[Pascal Fehler] IdSSLOpenSSL.pas(2139): E2017 Zeigertyp erforderlich
[Pascal Fehler] IdSSLOpenSSL.pas(2144): E2003 Undefinierter Bezeichner: 'IdSslX509GetSignatureType'
[Pascal Fehler] IdSSLOpenSSL.pas(2149): E2003 Undefinierter Bezeichner: 'IdSslOBJNid2ln'
[Pascal Fehler] IdSSLOpenSSL.pas(2176): E2003 Undefinierter Bezeichner: 'IdSslX509Free'
[Pascal Fehler] IdSSLOpenSSL.pas(2184): E2003 Undefinierter Bezeichner: 'PASN1_INTEGER'
[Pascal Fehler] IdSSLOpenSSL.pas(2188): E2003 Undefinierter Bezeichner: 'IdSslX509GetSerialNumber'
[Pascal Fehler] IdSSLOpenSSL.pas(2189): E2035 Nicht genügend wirkliche Parameter
[Pascal Fehler] IdSSLOpenSSL.pas(2190): E2029 ';' erwartet, aber 'ELSE' gefunden
[Pascal Fehler] IdSSLOpenSSL.pas(2192): E2003 Undefinierter Bezeichner: 'Result'
[Pascal Fehler] IdSSLOpenSSL.pas(2193): E2029 '.' erwartet, aber ';' gefunden
[Pascal Warnung] IdSSLOpenSSL.pas(2194): W1011 Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Pascal Fehler] IdSSLOpenSSL.pas(525): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RSubject'
[Pascal Fehler] IdSSLOpenSSL.pas(526): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RIssuer'
[Pascal Fehler] IdSSLOpenSSL.pas(527): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RnotBefore'
[Pascal Fehler] IdSSLOpenSSL.pas(528): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RnotAfter'
[Pascal Fehler] IdSSLOpenSSL.pas(529): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RFingerprint'
[Pascal Fehler] IdSSLOpenSSL.pas(530): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.RFingerprintAsString'
[Pascal Fehler] IdSSLOpenSSL.pas(532): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdX509.GetVersion'
[Pascal Fehler] IdSSLOpenSSL.pas(553): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.GetDescription'
[Pascal Fehler] IdSSLOpenSSL.pas(554): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.GetName'
[Pascal Fehler] IdSSLOpenSSL.pas(555): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.GetBits'
[Pascal Fehler] IdSSLOpenSSL.pas(556): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.GetVersion'
[Pascal Fehler] IdSSLOpenSSL.pas(558): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.Create'
[Pascal Fehler] IdSSLOpenSSL.pas(559): E2065 Ungenügende Forward- oder External-Deklaration: 'TIdSSLCipher.Destroy'
[Pascal Fehler] IdSSLOpenSSL.pas(581): E2065 Ungenügende Forward- oder External-Deklaration: 'EIdOpenSSLAPISSLError.RaiseException'
[Pascal Fehler] IdSSLOpenSSL.pas(592): E2065 Ungenügende Forward- oder External-Deklaration: 'EIdOpenSSLAPICryptoError.RaiseExceptionCode'
[Pascal Fehler] IdSSLOpenSSL.pas(593): E2065 Ungenügende Forward- oder External-Deklaration: 'EIdOpenSSLAPICryptoError.RaiseException'
[Pascal Fataler Fehler] IdAuthenticationNTLM.pas(77): F2063 Verwendete Unit 'IdSSLOpenSSL.pas' kann nicht compiliert werden
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.365 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: INDY 9 und SSL

  Alt 28. Aug 2009, 04:06
Also, ich habe jetzt den virtuellen PC wieder zurückgesetzt, die aktuelle Version von Indy von http://indy.fulgan.com/zip/indy10.zip in ein Komponentenverzeichnis ausgepackt und den Bibliothekspfad durch diese neuen Verzeichnisse ersetzt. Und es funktionierte sofort problemlos.

Der Bibliothekspfad sieht so aus:
Code:
$(BDS)\lib;$(BDS)\Imports;L:\Delphi\Komponenten\Internet\indy10\Lib\Core;
L:\Delphi\Komponenten\Internet\indy10\Lib\Protocols;L:\Delphi\Komponenten\Internet\indy10\Lib\Security;
L:\Delphi\Komponenten\Internet\indy10\Lib\SuperCore;L:\Delphi\Komponenten\Internet\indy10\Lib\System
Mehr habe ich nicht verändert.

Da diese Fehlermeldung kommt:
Klick einmal in Zeile 204 in IdSSLOpenSSL mit rechts auf IdSSLOpenSSLHeaders und "Deklaration suchen" und schau einmal wo die dann geöffnete Datei liegt bzw. was darin in Zeile 7549 steht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:04 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