加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi:IdHTTP SSL不起作用.没错!

发布时间:2020-12-15 10:07:00 所属栏目:大数据 来源:网络整理
导读:我使用TidHTTP TIdSSLIOHandlerSocketOpenSSL 2 DLL:来自 http://indy.fulgan.com/SSL的ssleay32.dll和libeay32.dll. 但我可以在HTTP Analyzer中看到我的程序的所有工作!它可以用作HTTP,而不是HTTPS.如果我使用Opera,我看不到使用同一站点下载(https://est
我使用TidHTTP TIdSSLIOHandlerSocketOpenSSL 2 DLL:来自 http://indy.fulgan.com/SSL的ssleay32.dll和libeay32.dll.

但我可以在HTTP Analyzer中看到我的程序的所有工作!它可以用作HTTP,而不是HTTPS.如果我使用Opera,我看不到使用同一站点下载(https://esta.cbp.dhs.gov/esta).

我没有为TidHTTP和TIdSSLIOHandlerSocketOpenSSL设置任何特殊参数(可能是我必须但我不知道到底是什么).

我必须使用TIdSSLVersion(sslvSSLv23)SSL证书的位置吗?我在哪里可以获得此证书?还是只有RootCertFile?

如何将idHttp的端口更改为443(我必须这样做吗?)?

我用:

procedure TForm1.FormCreate(Sender: TObject);
var mem:tmemorystream;
begin
try
  mem:=TMemoryStream.Create();
  try
    idhttp1.Get('https://esta.cbp.dhs.gov/esta/',Mem);
  except
   on E : Exception do ShowMessage(E.Message);
  end;
finally
  mem.Free;
  idhttp1.Free;
end;
end;

请看我的视频:http://liga-installer.realservers.info/ssl.mp4

截屏:

谢谢谢谢你的帮助!

解决方法

这个简单的示例适用于Delphi XE开箱即用,因此您无需在客户端更改端口或使用证书.它基于 an example from RosettaCode:
Uses
  IdHttp,IdSSLOpenSSL

procedure TForm2.Button1Click(Sender: TObject);
var
  s: string;
  lHTTP: TIdHTTP;
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
    lHTTP.HandleRedirects := True;
    s := lHTTP.Get('https://esta.cbp.dhs.gov/esta/');
    RichEdit1.Text := s;
  finally
    lHTTP.Free;
  end;
end;

问题可能是您需要部署的DLL的版本.由于最近的版本修复了安全问题,我建议将您的Indy版本升级到最新版本并使用fulgan网站上最新的OpenSSL库.

更新:您是说您无法使用网络浏览器查看网站,或者当您这样做时无法在HTTP分析器中看到流量?正如Rob提到的,如果使用常规Web浏览器看不到该站点,那么问题可能不是您的应用程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读