我有一个程序,目前使用Delphi 7和Indy 9(我相信)执行多个HTTP GET
请求。我现在需要将它们转换为使用HTTPS。
服务器端在我的控制之下。
我也不想在我的程序中安装任何外部DLL。
我已经完成了很多谷歌搜索,但对我来说,我要么必须安装外部OpenSSL DLL,要么升级到以后的Delphi版本,或者使用不像{{1}那样简单的第三方控件} component。
有没有人对从哪里开始有任何建议?
答案 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之外的现代安全协议。
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的未来版本中。)