使用SSL证书进行SOAP调用时出现SSL错误:
请求已中止:无法创建SSL / TLS安全通道。
奇怪的是,如果我在Firefox中加载证书并访问端点或在不发送任何数据的情况下调用API,则不会收到任何错误消息,并且连接成功。公开API的公司还提到证书是犹太洁食。
我正在加载的证书具有“所有人”的全部特权。我已经尝试过在互联网上看到的所有解决方案,但仍然会收到错误消息。
这是我创建请求的代码:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var request = (HttpWebRequest)WebRequest.Create(plugin.EndPoint);
request.ContentType = "text/xml; charset=utf-8";
request.Method = "POST";
获得证书的代码(我也尝试过使用pfx):
var cert = new
509Certificate2(@"C:\clientcert.p12", "FakePassword");
request.ClientCertificates.Add(cert);
和请求代码:
byte[] byteArray = Encoding.UTF8.GetBytes(xml);
request.ContentLength = byteArray.Length;
using (var dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
using (WebResponse response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
StreamReader reader =
new StreamReader(responseStream ?? throw new InvalidOperationException());
return reader.ReadToEnd();
}
}
}
编辑:
这是运行请求的跟踪输出:
System.Net信息:0:[11844] InitializeSecurityContext(In-Buffers count = 2,Out-Buffer length = 0, 返回的代码= CertUnknown)。 System.Net错误:0:[11844]中的异常 HttpWebRequest#63832831 ::-请求被中止:无法创建 SSL / TLS安全通道。System.Net错误:0:[11844]中的异常 HttpWebRequest#63832831 :: EndGetRequestStream-请求为 已中止:无法创建SSL / TLS安全通道。
我还更改了SecurityProtocol:
ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
第二个编辑:我可以通过仅从SOAP UI中的文件系统加载SSL证书来使其在SoapUI中工作,但不能在.NET应用程序中工作。
答案 0 :(得分:1)
出于兴趣,您的应用使用的是TLS 1.0、1.1和1.2协议,但是在Internet Explorer中启用了使用吗?
如果不在web.config中,请将其添加
<appSettings>
<add key="SecurityProtocol" value="Tls12" />
</appSettings>
然后还在高级设置标签中的IE中检查它是否已启用:“使用TLS 1.2”
答案 1 :(得分:0)
您的SSL证书由Windows中未安装的根证书签名。
Firefox附带了自己的受信任的根证书列表,其中包含您正在使用的证书的根证书。仅仅因为Firefox信任证书并不意味着Windows信任它。
解决方案是在运行应用的计算机上安装证书的根证书或证书链。
如果这是一个具有广泛受众的应用程序,那么更简单的解决方案是切换到已经使用Windows附带的根证书的SSL提供程序。
答案 2 :(得分:0)
有时我也有此错误。我为克服此问题而采取的步骤如下:
我希望对您有帮助