首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL/TLS不使用.p7b证书。

SSL/TLS不使用.p7b证书。
EN

Stack Overflow用户
提问于 2016-02-08 16:40:59
回答 1查看 1K关注 0票数 0

我从一些支付提供者那里生成了客户端证书,我必须使用它来请求他们的https API。我的代码看起来是:

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://site/api/requests/");

request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataSerialized);
request.KeepAlive = false;

request.ProtocolVersion = HttpVersion.Version10;

ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

X509Certificate2Collection certCollection = new X509Certificate2Collection();
certCollection.Import(@"d:\Production Merchant Certificate.p7b");

request.ClientCertificates.AddRange(certCollection);
request.PreAuthenticate = true;


using (StreamWriter os = new StreamWriter(request.GetRequestStream())) //Exception
{
}

我总是有两个错误:

发送POST (表单)请求时发生错误,基础连接已关闭:发送时发生意外错误。System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强制关闭。-> System.Net.Sockets.SocketException:现有连接被远程主机强制关闭。

请求被中止:无法创建SSL/TLS安全通道。

如果您能告诉我发送带有一系列证书的请求的正确方式,我将不胜感激。

在中,我已经将p7b添加到本地计算机的个人和中级证书颁发机构中,但仍然得到了这两个错误。

EN

回答 1

Stack Overflow用户

发布于 2016-02-08 17:19:01

问题是您的客户端证书根本不包含私钥。PKCS#7容器(具有.p7b文件扩展名)不应该存储带有私钥的证书。您需要获得具有对私钥的有效引用的证书对象。证书可以安装在您的个人证书存储区(CurrentUser\My)中,也可以通过导入PKCS#12 (具有.pfx或.p12文件扩展名)容器来安装,该容器应该存储带有私钥的证书。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35274702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档