有什么方法可以在Delphi 10.2.3 THTTPRIO组件上强制使用TLS 1.2吗?

问题描述 投票:0回答:1

我正在 Delphi 10.2.3 Tokyo 中使用

THTTPRIO
组件来使用 Web 服务。我必须为 TLS 1.2/1.3 配置 Internet 选项设置,以便我可以进行连接。

是否可以在连接上强制使用 TLS 1.2/1.3?

我知道

THTTPRIO
依赖于WinInet。可以使用任何其他方式来完成 TLS 吗?

我尝试在

USE_INDY
中声明
Soap.SOAPHTTPTrans.pas
指令,但无法加载证书。它说证书不正确。

还有其他想法吗?

web-services delphi soap wininet
1个回答
0
投票

我建议你使用Indy组件。

看下面的例子:

uses
  IdHTTP, IdSSLOpenSSL, IdSSL, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack;

procedure UseTLSWithIndy;
var
  IdHTTP: TIdHTTP;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  IdHTTP := TIdHTTP.Create(nil);
  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    SSLIOHandler.SSLOptions.Method := sslvTLSv1_2;
    SSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_3];

    IdHTTP.IOHandler := SSLIOHandler;

    try
      ShowMessage(IdHTTP.Get('https://example.com'));
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;
  finally
    IdHTTP.Free;
    SSLIOHandler.Free;
  end;
end;
© www.soinside.com 2019 - 2024. All rights reserved.