首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Delphi-7的Indy10无法下载一些SSL页面,即使使用2019年5月的DLL。

使用Delphi-7的Indy10无法下载一些SSL页面,即使使用2019年5月的DLL。
EN

Stack Overflow用户
提问于 2019-08-26 10:09:46
回答 1查看 1.4K关注 0票数 4

我正在开发一个使用Indy 10下载网站的旧的Delphi 7应用程序。我在某些SSL页面上遇到了困难,而不是全部。

版本数据:

印第10 "libeay32.dll":1.0.2.19 @31-5-19 "ssleay32.dll":1.0.2.19 @31-5-19

当试图使用SSL (例如"https://davisashura.com/")在IdSSLOpenSSLHeaders单元(即Rev.1.8)下载某些页面时,以下过程将引发指定的错误:

class procedure EIdOpenSSLAPISSLError.RaiseExceptionCode(const AErrCode, ARetCode: TIdC_INT; const AMsg: String);

初始化代码:

代码语言:javascript
复制
  HTTP := TIdHTTP.Create;

  with HTTP do begin
    Request.UserAgent := 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
    HandleRedirects := True;
    RedirectMaximum := 5;
    ReadTimeout := 20400;
  //Request.AcceptEncoding := 'text/html, deflate, gzip';  // some websites don't download with this set
    Compressor := TIdCompressorZLib.Create;
    IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    HTTPOptions := HTTPOptions + [hoForceEncodeParams, hoInProcessAuth];
  end;

有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-26 17:38:26

EOF错误仅仅意味着服务器在TLS握手期间关闭其套接字连接的结束,而不首先发送TLS警报。这意味着服务器不喜欢握手中的某些内容,并且正在退出。最有可能的罪魁祸首是TLS版本。

默认情况下,TIdSSLIOHandlerSocketOpenSSL只启用TLS1.0,但现在许多站点需要TL1.1或1.2。您可以使用TIdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions属性启用TL1.1和1.2。

代码语言:javascript
复制
HTTP := TIdHTTP.Create;
HTTP.Request.UserAgent := 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
HTTP.HandleRedirects := True;
HTTP.RedirectMaximum := 5;
HTTP.ReadTimeout := 20400;
//HTTP.Request.AcceptEncoding := 'text/html, deflate, gzip'; // some websites don't download with this set
HTTP.Compressor := TIdCompressorZLib.Create(HTTP);
HTTP.HTTPOptions := HTTP.HTTPOptions + [hoForceEncodeParams, hoInProcessAuth];

SSL := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
SSL SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]; // <-- ADD THIS!
HTTP.IOHandler := SSL;

Indy的问题跟踪器中有一个关于这个问题的TODO项目:

#181:更新TIdSSLIOHandlerSocketOpenSSL以默认启用TLS 1.1和1.2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57655844

复制
相关文章

相似问题

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