Dav*_*age 2 delphi delphi-run-time-library delphi-11-alexandria
这段代码:
uses
System.Net.HttpClient;
procedure TForm2.Button1Click(Sender: TObject);
var
LHTTP: THTTPClient;
LResponse: IHTTPResponse;
begin
LHTTP := THTTPClient.Create;
try
LHTTP.SecureProtocols := [THTTPSecureProtocol.TLS13];
LResponse := LHTTP.Get('https://tls13.1d.pw'); // TLS 1.3 ONLY site
if LResponse.StatusCode = 200 then
ShowMessage('TLS 1.3 worked');
finally
LHTTP.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
结果是:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class ENetHTTPClientException with message 'Error sending data: (12175) A security error occurred'.
---------------------------
Break Continue Help Copy
---------------------------
Run Code Online (Sandbox Code Playgroud)
使用 Windows 10(相同的代码适用于 Windows 11)。我已进入 Windows 中的“Internet 选项”设置并启用了 TLS 1.3,但这并不能解决问题。
我还需要做什么吗?
根据 WinHTTP错误消息文档:
ERROR_WINHTTP_SECURE_FAILURE
12175
在服务器发送的安全套接字层 (SSL) 证书中发现一个或多个错误。要确定遇到的错误类型,请检查
WINHTTP_CALLBACK_STATUS_SECURE_FAILURE状态回调函数中的通知。有关详细信息,请参阅WINHTTP_STATUS_CALLBACK。
不幸的是,它不为您提供使用此类回调的访问权限,但它确实使用内部回调来捕获其属性中THTTPClient的原因。所以您可以检查以获取更多信息。ERROR_WINHTTP_SECURE_FAILURESecureFailureReasons
您确定在 Windows 10 上启用了 TLS 1.3 吗?您使用的是 1903 版本或更高版本吗?早期版本不支持 TLS 1.3。