我们可以在 C++ Builder 6 中执行 HTTPS 吗?安装的 INDY 仅用于 HTTP 请求

can we do HTTPS in c++ builder 6? installed INDY is only for HTTP requests

肯定有人能够在 c++ builder 6 中实现 https,请分享一下。

请分享文档或代码示例以在 c++ builder 6 中执行 https。

当前的 http 请求代码工作正常,但网络服务需要禁用通过 http 的请求,稍后将只接受 https 请求。

是的,它是一个太旧的 32 位应用程序。

Indy 的 TIdHTTP 绝对支持 HTTPS,尽管您必须通过将适当的 SSL 组件链接到 TIdHTTP 来告诉它您希望它使用哪个 SSL/TLS 库在连接到服务器之前。

使用哪个组件取决于您使用的 Indy 版本,您没有说明。我忘记了 C++Builder 6 是随 Indy 8 还是 9 一起提供的。但是你真的应该升级到最新的 Indy 10,它仍然支持 C++Builder 6 (1).

在 Indy 8 中,将 TIdConnectionInterceptOpenSSL 组件分配给 TIdHTTP::Intercept 属性。

在 Indy 9 中,将 TIdSSLIOHandlerSocket 组件分配给 TIdHTTP::IOHandler 属性。

在 Indy 10 中,将 TIdSSLIOHandlerSocketBase 派生的组件分配给 TIdHTTP::IOHandler 属性 (2)。默认的 SSL 组件是 TIdSSLIOHandlerSocketOpenSSL (3).

默认的 SSL 组件都是 OpenSSL 的包装器,因此您还需要在您的应用中部署 2 个 OpenSSL DLL - ssleay32.dlllibeay32.dll,您可以从 [=26] 下载=] 组件代替 (WIP).

(1):Indy 11 将不再支持 2009 之前版本的 C++Builder 和 Delphi。

(2): modern Indy 10 can handle this for you.

(3):如果您想使用不同的 TLS 库,则必须将其包装在派生自 TIdSSLIOHandlerSocketBase 的自定义组件中,并覆盖一些虚拟方法以委托 read/write 对库的操作。