使用客户端证书的身份验证从.Net应用程序发送https请求会导致“ System.IO.IOException:身份验证失败,因为远程方已关闭传输流”错误。
与相同客户端证书的相同请求适用于邮递员,也适用于curl 。
同一.Net应用程序在其他环境中工作。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var url = "https://yyyyyyyy:8081/xxxxxxxxx;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
X509Certificate2 cert = new X509Certificate2();
cert.Import("zzzzzz.pfx");
if (!cert.HasPrivateKey) throw new Exception("Certificate has no private key");
request.ClientCertificates.Add(cert);
if (request.ClientCertificates.Count != 1) throw new Exception("Certificate not loaded");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Bumm!!
未处理的异常:System.Net.WebException:基础连接已关闭:发送时发生意外错误。 ---> System.IO.IOException:身份验证失败,因为远程方已关闭传输流。
答案 0 :(得分:0)
仅供参考,使用curl发出相同的查询是没有任何问题的
curl --tlsv1.2 -v \
--cacert ca_crt.pem \
--cert cert.pem \
--key key.pem \
https://yyyyyyyy:8081/xxxxxxxxx
并使用以下密码套件:
* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA
答案 1 :(得分:0)
解决了!问题是缺少密码“ TLS_RSA_WITH_AES_256_CBC_SHA256”(由于安全规则.....)