INDY 10.1.5-quels dlls SSL travaillent avec Delphi 2006?

j'essaie de me connecter à des documents google (en suivant L'excellent exemple REST de Marco Cantu) mais j'obtiens les erreurs SSL suivantes:

1) Si j'utilise les dlls SSL d'openssl-0.9.8 i-i386-win32.zip j'obtiens l'erreur:

"impossible de charger la bibliothèque SSL"

2) Si j'utilise les dlls SSL de indy_OpenSSL096m.zip I get the error:

"Erreur lors de la connexion avec SSL"

3) Si j'utilise les dlls SSL de openssl-0.9.8 h-i386-win32-Indy-IntraWebEdition.zip j'obtiens l'erreur:

"impossible de charger la Bibliothèque SSl"

maintenant j'ai fait des recherches et il y a beaucoup de recommandations avec des liens morts vers dlls, y compris des liens sur le débordement de la pile. Je soupçonne que je dois trouver les dlls SSL qui sont compatibles avec la version D'INDY que j'utilise.

ma question Est, est-ce que quelqu'un sait exactement quels dlls SSL sont compatibles avec Delphi 2006 & INDY 10.1.5?

16
demandé sur Warren P 2009-12-09 18:31:29

5 réponses

j'ai eu le même problème même après la mise à niveau vers INDY 10.2.3 et j'ai essayé toutes les versions différentes du "libeay32.dll" et " ssleay32.dll" des fichiers que j'ai pu trouver ... Comme Matt, j'ai toujours eu une des deux erreurs: "ne pouvait pas charger la bibliothèque SSL" ou "erreur se connectant avec SSL" avec quelque chose comme" erreur:00000006:lib(0):func(0):EVP lib"...

j'étais très heureux quand je changeais le TidSSLioHandlerSocketOpenSSL.SSLOptions.Méthode à sslvSSLv23 et tout a commencé à fonctionner.

un peu plus de recherche et j'ai rapidement compris à chaque fois que j'ai eu l'erreur "ne pouvait pas charger la bibliothèque SSL" j'utilisais la mauvaise version des fichiers DLL et à chaque fois que j'ai eu l ' "erreur se connecter avec SSL" avec quelque chose comme "erreur:00000006:lib(0):func(0):EVP lib" j'ai utilisé le mauvais SSLOptions.Méthode de la valeur.

autres informations: J'utilise Delphi 2006, INDY 10.2.3 et je suis runnin sur WinXP Pro

Cela m'a causé beaucoup de douleur, j'espère que ce post va sauver quelqu'un certain temps.

17
répondu Dave Clark 2010-03-12 22:07:41

vous pouvez avoir recours à des essais et des erreurs en utilisant les téléchargements de Fulgan site.

vous pourriez vouloir penser à mettre à jour votre copie D'Indy et utiliser les DLLs OpenSSL les plus récents.

3
répondu Bruce McGee 2009-12-09 17:19:11

FWIW, depuis que j'ai passé beaucoup de temps à faire fonctionner cette chose https, voici les résultats de mes efforts réussis.

1-Delphi 7

2-indy9.0.19_d7.exe

3 - IdSSLIOHandlerSocket1.SSLOptions.Méthode: = sslvTLSv1; or,

IdSSLIOHandlerSocket1.SSLOptions.Méthode: = sslvTLSv23; or,

IdSSLIOHandlerSocket1.SSLOptions.Méthode: = sslvTLSv3;

j'ai essayé indy10.0.76_d7.exe et indy10.1.5_d7.exe sous Delphi 7 et je ne peux pas les faire installer correctement, encore moins faire fonctionner HTTPS. Je reçois le message infâme " Unit IdSysWin32 a été compilé avec une version différente D'IdException.EIdException."J'ai cherché une solution à ce problème sur le web et je n'ai pas pu en trouver une - des tas d'autres personnes avaient le même message.

un site utile pour tester https est https://msp.f-secure.com/web-test/common/test.html

Voici ma source:

procedure TForm1.ButtonHTTPSClick(Sender: TObject);
var
  IdHTTP1: TIdHTTP;
  ParamStringList: TStringList;
  s1: String;
  MemoryStream1: TMemoryStream;
  IdSSLIOHandlerSocket1:  TIdSSLIOHandlerSocket;
begin //  ssl works fine must have Indy version indy9.0.19_d7.exe and must use option  sslvSSLv23

  Screen.Cursor := crHourGlass;
  IdHTTP1 := TIdHTTP.Create(nil);
  IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocket.Create(nil); 
  IdHTTP1.IOHandler := IdSSLIOHandlerSocket1;

//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; // sslvSSLv1 works fine
    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3; // sslvSSLv3 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23; // sslvSSLv23 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;   sslvSSLv2 does not work
    IdSSLIOHandlerSocket1.SSLOptions.Mode := sslmUnassigned;
    IdSSLIOHandlerSocket1.SSLOptions.VerifyMode := [];
  IdSSLIOHandlerSocket1.SSLOptions.VerifyDepth := 0;

  ParamStringList := TStringList.Create;
  MemoryStream1 := TMemoryStream.Create;
  s1 := IdHTTP1.Post('https://msp.f-secure.com/web-test/common/test.html', ParamStringList);
  MemoryStream1.Write(s1[1], Length(s1));
  MemoryStream1.Position := 0;
  MemoryStream1.SaveToFile('c:\temp\MemoryStream1.txt');
  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile('c:\temp\MemoryStream1.txt');
  MemoryStream1.Free;
  ParamStringList.Free;
  IdSSLIOHandlerSocket1.Free;
  IdHTTP1.Free;
  Screen.Cursor := crDefault;
end;
3
répondu user1355041 2012-04-25 01:42:05

autant que je sache, les versions les plus récentes D'Indy fonctionnent avec des binaires OpenSSL standard. Télécharger ici. Nous avons produit une application client FTP Delphi il y a quelques temps en utilisant Indy avec des connexions SSL et je suis sûr que nous venons d'envoyer les DLLs OpenSSL actuels.

Edit: juste vérifié le répertoire app et les DLLs que nous avons utilisés sont OpenSSL 0.9.8.2 (3-Aug-06). (C'est une vieille app)

Edit 2: j'ai juste copié le plus récent 0.9.8 k dll-dessus et qu'ils fonctionnent très bien trop.

2
répondu shunty 2009-12-10 10:28:18

trouvez la version Indy que vous utilisez.Copiez L'Indy dlls I. e libeay32.dll, libssl32.dll et ssleay32.dll dans le dossier Windows/System 32.Il résoudra l'erreur "Could not Load SSL Library"

1
répondu Anudeep 2013-05-15 10:36:39