You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi中为THTTPSoapDispatcher和THTTPSoapPascalInvoker配置HTTPS

Delphi中基于THTTPSoapDispatcher/THTTPSoapPascalInvoker的Web服务器适配HTTPS方案

组件对HTTPS的支持情况

THTTPSoapDispatcher和THTTPSoapPascalInvoker本身不直接处理HTTPS传输,它们仅负责SOAP请求的路由分发与Pascal代码调用逻辑。这两个组件的HTTPS能力完全依赖于承载它们的底层Web服务器组件(比如Delphi WebBroker架构常用的TIdHTTPWebBrokerBridge,属于Indy组件库),只要底层服务器开启HTTPS支持,SOAP组件就能正常工作。

具体实现步骤

1. 准备SSL证书

  • 测试环境:可通过OpenSSL生成自签名证书,命令示例:
    openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
    
  • 生产环境:使用权威CA机构颁发的正式SSL证书。

2. 配置底层Indy服务器组件

如果你的独立Web服务器基于TIdHTTPWebBrokerBridge,按以下步骤开启SSL:

  • 从组件面板的「Indy -> Servers」分类中添加TIdSSLIOHandlerSocketOpenSSL到窗体/数据模块
  • 将TIdHTTPWebBrokerBridge的IOHandler属性绑定到这个SSLIOHandler组件
  • 配置SSL证书路径:
    • 设置SSLOptions.CertFile为证书文件路径(如C:\certs\server.crt)
    • 设置SSLOptions.KeyFile为私钥文件路径(如C:\certs\server.key)
    • 若私钥带密码,补充设置SSLOptions.Password
  • 将TIdHTTPWebBrokerBridge的DefaultPort改为HTTPS默认端口443,也可自定义如8443等端口

3. 保持SOAP组件原有配置

THTTPSoapDispatcher和THTTPSoapPascalInvoker无需额外修改,只要它们已正确关联到WebBroker的TWebModule,底层服务器开启HTTPS后,SOAP请求会自动通过加密通道传输。

4. 代码启动HTTPS服务器

示例代码片段:

procedure TMainForm.FormCreate(Sender: TObject);
begin
  IdHTTPWebBrokerBridge1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  // 绑定证书与私钥
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := 'C:\certs\server.crt';
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile := 'C:\certs\server.key';
  // 设置HTTPS端口并启动服务
  IdHTTPWebBrokerBridge1.DefaultPort := 443;
  IdHTTPWebBrokerBridge1.Active := True;
end;

5. 验证HTTPS服务

使用浏览器或SOAP客户端访问https://localhost/你的SOAP服务路径,确认SSL连接正常且SOAP方法可调用。

注意事项

  • 确保程序运行目录包含Indy所需的SSL动态库(如libcrypto-1_1.dll、libssl-1_1.dll,旧版为libeay32.dll、ssleay32.dll)
  • 生产环境避免使用自签名证书,防止客户端触发安全警告
  • 若使用非443端口,访问时需明确指定端口(如https://localhost:8443/...)

内容的提问来源于stack exchange,提问作者hr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:02:23