首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >delphi 7将HTTP gets转换为HTTPS gets

delphi 7将HTTP gets转换为HTTPS gets
EN

Stack Overflow用户
提问于 2016-11-02 18:12:54
回答 1查看 2K关注 0票数 3

我有一个程序,目前使用Delphi7和Indy 9(我相信)执行几个HTTP GET请求。我现在需要把它们转换成使用HTTPS。

服务器端在我的控制之下。

我也不想在我的程序中安装任何外部DLL。

我已经做了很多谷歌搜索,但在我看来,我要么必须安装外部OpenSSL DLL,要么升级到更晚的TIdHTTP版本,或者使用第三方控件,而这个控件不像TIdHTTP组件那么简单。

有人对从哪里开始有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 18:41:47

不幸的是,Indy 9需要SSL/TLS的OpenSSL DLL,即使这样,它也需要定制的DLL版本。这些DLL可在Indy的富勒镜中的/SSL/Archive文件夹中使用。

要在Indy 9中的TIdHTTP中使用HTTPS,只需将Indy的TIdSSLIOHandlerSocket组件分配给TIdHTTP.IOHandler属性,然后使用应用程序部署定制的OpenSSL DLL。但是请注意,DLL非常古老(通常是Indy 9),因此您将无法使用TLS 1.0以外的现代安全协议。

另一方面,Indy 10并不需要OpenSSL。OpenSSL是Indy的默认SSL/TLS引擎,但是您可以通过为它编写/获取TIdSSLIOHandlerSocketBase-derived包装组件来插件另一个SSL/TLS引擎。一些第三方SSL/TLS引擎提供了这样一个SSLIOHandler,例如Eldos SecureBlackbox,并且可能还有其他第三方SSLIOHandler实现。

理论上,Indy 10确实支持Delphi版本回到5(虽然旧版本没有定期测试),所以您应该能够更新您的Delphi 7应用程序来使用Indy 10。

要在Indy 10中的TIdHTTP中使用HTTPS,只需将一个TIdSSLIOHandlerSocketBase-derived组件分配给TIdHTTP.IOHandler属性,然后在应用程序中部署DLL(如果有的话)。

Indy 10的TIdSSLIOHandlerSocketOpenSSL组件使用标准的OpenSSL DLL,而不是自定义DLL,因此您可以使用任何OpenSSL DLL发行版( /SSL文件夹中的Fulgan镜像中提供了最新的DLL)。

如果您坚决避免使用DLL,并且不想为第三方SSL/TLS引擎支付大量费用,那么您至少可以编写自己的自定义SSLIOHandler,它封装了微软的SChannel API,它是内置于Windows的,不依赖可发行的DLL(一个基于SChannel的SSLIOHandler实现预计将包含在未来的Indy版本中)。

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

https://stackoverflow.com/questions/40386948

复制
相关文章

相似问题

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