delphi 7 将 HTTP 获取转换为 HTTPS 获取
delphi 7 convert HTTP gets to HTTPS gets
我有一个程序目前使用 Delphi 7 和 Indy 9(我相信)执行多个 HTTP GET
请求。我现在需要将它们转换为使用 HTTPS。
服务器端在我的控制之下。
我也不想在我的程序中安装任何外部 DLL。
我做了很多 Google 搜索,但对我来说,我要么必须安装外部 OpenSSL DLL,要么升级到更高的 Delphi 版本,要么使用第 3 方控件不像TIdHTTP
组件那么简单。
有人对从哪里开始有任何建议吗?
不幸的是,Indy 9 需要 SSL/TLS 的 OpenSSL DLL,即便如此,它也需要 定制 版本的 DLL。这些 DLL 在 Indy 的 Fulgan mirror 的 /SSL/Archive
文件夹中可用。
要在 Indy 9 的 TIdHTTP
中使用 HTTPS,只需将 Indy 的 TIdSSLIOHandlerSocket
组件分配给 TIdHTTP.IOHandler
属性,然后使用您的应用程序部署自定义 OpenSSL DLL .但请注意,DLL 非常旧(通常 Indy 9 也是如此),因此您将无法使用 TLS 1.0 之后的现代安全协议。
另一方面,Indy 10 不需要 OpenSSL 特别是。 OpenSSL 是 Indy 的 default SSL/TLS 引擎,但是你可以通过 writing/obtaining 为它插入另一个 SSL/TLS 引擎,一个 TIdSSLIOHandlerSocketBase
-derived wrapper component .一些第 3 方 SSL/TLS 引擎提供了这样的 SSLIOHandler
,例如 Eldos SecureBlackbox,并且可能还有其他第 3 方 SSLIOHandler
实现。
理论上,Indy 10 确实支持 Delphi 版本回到 5(虽然旧版本没有定期测试),所以你应该能够更新你的 Delphi 7 应用程序以使用 Indy 10 .
要在 Indy 10 的 TIdHTTP
中使用 HTTPS,只需将 TIdSSLIOHandlerSocketBase
派生的组件分配给 TIdHTTP.IOHandler
属性,然后部署 DLL(如果有的话) ) 与您的应用程序。
Indy 10 的 TIdSSLIOHandlerSocketOpenSSL
组件使用标准 OpenSSL DLL,而不是自定义 DLL,因此您可以使用任何 OpenSSL DLL 发行版(在 /SSL
文件夹)。
如果您坚决避免 DLL,并且不想为第 3 方 SSL/TLS 引擎支付很多钱,您至少可以编写自己的自定义 SSLIOHandler
包装 Microsoft 的 SChannel API,它内置于 Windows 并且不依赖于可分发的 DLL(基于 SChannel 的 SSLIOHandler
实现预计将包含在 Indy 的未来版本中)。
我有一个程序目前使用 Delphi 7 和 Indy 9(我相信)执行多个 HTTP GET
请求。我现在需要将它们转换为使用 HTTPS。
服务器端在我的控制之下。
我也不想在我的程序中安装任何外部 DLL。
我做了很多 Google 搜索,但对我来说,我要么必须安装外部 OpenSSL DLL,要么升级到更高的 Delphi 版本,要么使用第 3 方控件不像TIdHTTP
组件那么简单。
有人对从哪里开始有任何建议吗?
不幸的是,Indy 9 需要 SSL/TLS 的 OpenSSL DLL,即便如此,它也需要 定制 版本的 DLL。这些 DLL 在 Indy 的 Fulgan mirror 的 /SSL/Archive
文件夹中可用。
要在 Indy 9 的 TIdHTTP
中使用 HTTPS,只需将 Indy 的 TIdSSLIOHandlerSocket
组件分配给 TIdHTTP.IOHandler
属性,然后使用您的应用程序部署自定义 OpenSSL DLL .但请注意,DLL 非常旧(通常 Indy 9 也是如此),因此您将无法使用 TLS 1.0 之后的现代安全协议。
另一方面,Indy 10 不需要 OpenSSL 特别是。 OpenSSL 是 Indy 的 default SSL/TLS 引擎,但是你可以通过 writing/obtaining 为它插入另一个 SSL/TLS 引擎,一个 TIdSSLIOHandlerSocketBase
-derived wrapper component .一些第 3 方 SSL/TLS 引擎提供了这样的 SSLIOHandler
,例如 Eldos SecureBlackbox,并且可能还有其他第 3 方 SSLIOHandler
实现。
理论上,Indy 10 确实支持 Delphi 版本回到 5(虽然旧版本没有定期测试),所以你应该能够更新你的 Delphi 7 应用程序以使用 Indy 10 .
要在 Indy 10 的 TIdHTTP
中使用 HTTPS,只需将 TIdSSLIOHandlerSocketBase
派生的组件分配给 TIdHTTP.IOHandler
属性,然后部署 DLL(如果有的话) ) 与您的应用程序。
Indy 10 的 TIdSSLIOHandlerSocketOpenSSL
组件使用标准 OpenSSL DLL,而不是自定义 DLL,因此您可以使用任何 OpenSSL DLL 发行版(在 /SSL
文件夹)。
如果您坚决避免 DLL,并且不想为第 3 方 SSL/TLS 引擎支付很多钱,您至少可以编写自己的自定义 SSLIOHandler
包装 Microsoft 的 SChannel API,它内置于 Windows 并且不依赖于可分发的 DLL(基于 SChannel 的 SSLIOHandler
实现预计将包含在 Indy 的未来版本中)。