不幸的是,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 的默认 SSL/TLS 引擎,但您可以通过为其编写/获取TIdSSLIOHandlerSocketBase 派生的包装组件来插入另一个 SSL/TLS 引擎。一些第 3 方 SSL/TLS 引擎提供了这样的SSLIOHandler,例如Eldos SecureBlackbox,并且可能还有其他第 3 方SSLIOHandler 实现浮动。
理论上,Indy 10 确实支持回到 5 的 Delphi 版本(尽管旧版本没有定期测试),因此您应该能够更新您的 Delphi 7 应用以使用 Indy 10。
要在 Indy 10 的 TIdHTTP 中使用 HTTPS,只需将 TIdSSLIOHandlerSocketBase 派生组件分配给 TIdHTTP.IOHandler 属性,然后将 DLL(如果有)部署到您的应用中。
Indy 10 的 TIdSSLIOHandlerSocketOpenSSL 组件使用标准 OpenSSL DLL,而不是自定义 DLL,因此您可以使用任何 OpenSSL DLL 分发版(/SSL 文件夹中的 Fulgan 镜像中提供了最新的 DLL)。
如果您坚决避免使用 DLL,并且不想为第 3 方 SSL/TLS 引擎花很多钱,您至少可以编写自己的自定义 SSLIOHandler 来包装 Microsoft 的 SChannel API,它是 Windows 内置的,不依赖可分发的 DLL(基于 SChannel 的 SSLIOHandler 实现预计将包含在 Indy 的未来版本中)。