我目前正在尝试连接到api,但我得到了以下错误:could not create ssl/tls secure channel
当通过Postman、相同的端点、相同的证书和所有东西发出请求时,请求都能工作,但是当我通过restsharp发出请求时,它会由于SSL/TLS错误而停止。
我尝试使用代码: TLS12强制安全协议:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
还尝试使用ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };和该代码的其他一些变体删除证书验证。
也尝试在客户机上禁用它,但是没有成功,client.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;也没有成功。
因此,我目前正在尝试使用Wireshark获取更多信息。据我所理解,这并不是密码套件的问题,因为它传递了"Client Hello“和"Server Hello”,并停止在“证书请求,服务器Hello”上。

当我向邮递员提出请求时,图像上出现的错误也会出现。
当它收到带有RST的ACK标志时,它会停在这一行上。

有人知道为什么它不起作用吗?
此外,值得一提的是,我以前多次使用相同的代码来调用其他api,它们似乎工作得很好。不管我做什么都做不到的。我无法访问服务器,因为它是第三方api。
如能在这方面提供任何帮助,我们将不胜感激。
编辑:添加用于进行api调用的代码和一些被询问的更多信息
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificateReturn, chainReturn, sslPolicyErrors) => true;
var client = new RestClient(api);
client.Timeout = -1;
//Add Certificate
X509Certificate2 cert = null;
if (GCONTABANCO.SelectCERTIFICADO(IDCONTABANCO, ref cert, ref MSG) == false) { return false; }
client.ClientCertificates = new X509CertificateCollection();
client.ClientCertificates.Add(cert);
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", clientId);
request.AddParameter("client_secret", clientSecret);
request.AddParameter("scope", "extrato.read boleto-cobranca.read boleto-cobranca.write");
IRestResponse response = client.Execute(request);我正在使用.net框架4.5.2,我尝试更新到4.7,但是错误仍然存在,目前我无法更新版本,因为它是一个大系统,不能冒险破坏它
Windows版本号: 21H1 (10.0.19043)
发布于 2022-08-26 12:31:59
因此,我设法在他们的IT架构师的帮助下解决了这个问题,如果将来有人遇到同样的问题,我将把答案留在这里。
因为他们有很多证书要通过连接发送,所以它超出了允许的限制并关闭了连接,所以我不得不更改限制,以便能够连接到服务器。在C#中,它必须在regedit上进行更改。
为此,我必须:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging
F 211
在这样做并再次测试之后,连接是成功的。
https://stackoverflow.com/questions/73407388
复制相似问题