delphi 7转换HTTP获取到HTTPS获取

时间:2016-11-02 18:12:55

标签: delphi delphi-7

我有一个程序,目前使用Delphi 7和Indy 9(我相信)执行多个HTTP GET请求。我现在需要将它们转换为使用HTTPS。

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

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

我已经完成了很多谷歌搜索,但对我来说,我要么必须安装外部OpenSSL DLL,要么升级到以后的Delphi版本,或者使用不像{{1}那样简单的第三方控件} component。

有没有人对从哪里开始有任何建议?

1 个答案:

答案 0 :(得分:6)

不幸的是,Indy 9需要OpenSSL DLL用于SSL / TLS,即使这样,它也需要定制的版本的DLL。这些DLL可以在/SSL/Archive文件夹中的Indy Fulgan mirror上找到。

要在Indy 9中的TIdHTTP中使用HTTPS,只需将Indy的TIdSSLIOHandlerSocket组件分配给TIdHTTP.IOHandler属性,然后使用您的应用部署自定义OpenSSL DLL。但请注意,这些DLL非常老(一般来说就像Indy 9一样),因此您将无法使用TLS 1.0之外的现代安全协议。

另一方面,Indy 10不需要特定的 OpenSSL 。 OpenSSL是Indy的默认 SSL / TLS引擎,但您可以通过为其编写/获取TIdSSLIOHandlerSocketBase派生的包装器组件来插入另一个SSL / TLS引擎。某些第三方SSL / TLS引擎提供此类SSLIOHandler,例如Eldos SecureBlackbox,并且可能还有其他第三方SSLIOHandler实现。

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

要在Indy 10中的TIdHTTP中使用HTTPS,只需将TIdSSLIOHandlerSocketBase派生的组件分配给TIdHTTP.IOHandler属性,然后使用您的应用程序部署DLL(如果有的话)。 / p>

Indy 10的TIdSSLIOHandlerSocketOpenSSL组件使用标准的OpenSSL DLL,而不是自定义DLL,因此您可以使用任何OpenSSL DLL分发({{{{{{{{{{{ 1}}文件夹)。

如果您坚持要避免使用DLL,并且您不想为第三方SSL / TLS引擎支付大量资金,那么您至少可以编写自己的自定义/SSL来包装Microsoft& #39; s SChannel API,内置于Windows并且不依赖于可分发的DLL(基于SChannel的SSLIOHandler实现预计将包含在Indy的未来版本中。)