代码之家  ›  专栏  ›  技术社区  ›  Dave Nottage

THTTPClient获取仅限TLS 1.3的站点导致错误

  •  0
  • Dave Nottage  · 技术社区  · 4 年前

    此代码:

    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;
    

    结果:

    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project Project1.exe raised exception class ENetHTTPClientException with message 'Error sending data: (12175) A security error occurred'.
    ---------------------------
    Break   Continue   Help   Copy   
    ---------------------------
    

    使用Windows 10(同样的代码适用于Windows 11)。我已经进入Windows中的“Internet选项”设置并启用了TLS 1.3,但这并不能解决问题。

    还有什么需要我做的吗?

    0 回复  |  直到 4 年前
        1
  •  5
  •   Remy Lebeau    4 年前

    根据WinHTTP Error Messages 文件:

    http_SECURE_FAILURE中的错误

    12175

    在服务器发送的安全套接字层(SSL)证书中发现一个或多个错误。 要确定遇到的错误类型,请检查 WINHTTP_CALLBACK_STATUS_SECURE_FAILURE 状态回调函数中的通知。有关详细信息,请参阅 WINHTTP_STATUS_CALLBACK

    不幸地 THTTPClient 不提供使用此类回调的访问权限,但它确实使用内部回调来捕获 ERROR_WINHTTP_SECURE_FAILURE SecureFailureReasons 所有物所以你可以查看更多信息。

    你是吗 当然 您在Windows 10上启用了TLS 1.3?您使用的是1903或更高版本吗?早期版本不支持TLS 1.3。

    how to enable TLS 1.3 in windows 10

    推荐文章