首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >INDY 10.1.5 -哪些SSL dll可以与Delphi 2006一起使用?

INDY 10.1.5 -哪些SSL dll可以与Delphi 2006一起使用?
EN

Stack Overflow用户
提问于 2009-12-09 23:31:30
回答 5查看 19.1K关注 0票数 17

我正在尝试连接到google文档(遵循Marco Cantu的优秀REST示例),但我得到了以下SSL错误:

1)如果我使用openssl-0.9.8i-i386-win32.zip中的SSL dll,我会得到错误:

“无法加载SSL库”

2)如果我使用来自indy_OpenSSL096m.zip的SSL,我会得到错误:

“连接SSL时出错”

3)如果我使用来自openssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zip的SSL,我会得到错误:

“无法加载SSl库”

现在我对此进行了研究,有很多关于dll的死链接的建议,包括堆栈溢出上的链接。我怀疑我需要找到与我正在使用的INDY版本兼容的SSL dll。

我的问题是,有没有人确切知道哪些SSL dll与Delphi2006和Indy10.1.5兼容?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-13 06:07:41

即使在我升级到INDY 10.2.3之后,我也遇到了同样的问题,我尝试了我能找到的每个不同版本的“libeay32.dll”和“ssleay32.dll”文件...像Matt一样,我总是得到两个错误中的一个:“无法加载SSL库”或“错误连接到SSL”,类似于“错误:00000006:lib(0):func(0):EVP lib”...

当我将TidSSLioHandlerSocketOpenSSL.SSLOptions.Method更改为sslvSSLv23时,我非常高兴,一切都开始工作了。

经过更多的研究,我很快就明白了,每当我收到“无法加载SSL库”的错误消息时,我就会使用错误的DLL文件版本,而每当我收到类似“错误:00000006:lib(0):func(0):EVP lib”之类的“连接SSL时出错”的消息时,我就会发现自己使用了错误的SSLOptions.Method值。

其他信息:我正在使用Delphi2006,Indy10.2.3,我在WinXP专业版上运行

这给我带来了很大的痛苦,我希望这篇文章能节省一些人的时间。

票数 18
EN

Stack Overflow用户

发布于 2009-12-10 01:19:12

您可以使用Fulgan site上的下载来进行一些试验和错误。

您可能需要考虑更新您的Indy副本,并使用最新的OpenSSL DLL。

票数 3
EN

Stack Overflow用户

发布于 2012-04-25 09:42:05

顺便说一句,由于我花了很多时间让https这个东西工作,下面是我成功工作的结果。

1- Delphi 7

2- indy9.0.19_d7.exe

3- IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1;或者,

IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv23;或者,

IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv3;

我在Delphi7下尝试了indy10.0.76_d7.exe和indy10.1.5_d7.exe,但我无法正确安装它们,更不用说让HTTPS正常工作了。我得到了一条臭名昭著的消息:“单元IdSysWin32是用不同版本的IdException.EIdException编译的。”我在网上搜索了这个问题的解决方案,但找不到--其他人也有同样的信息。

测试https的一个有用的站点是https://msp.f-secure.com/web-test/common/test.html

这是我的来源:

代码语言:javascript
代码运行次数:0
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1874677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档