繁体   English   中英

将TLS证书添加到API请求中,但出现以下异常:请求已中止:无法创建SSL / TLS安全通道

[英]Adding TLS certificate to the API request with exception: The request was aborted: Could not create SSL/TLS secure channel

为了能够使用某些API,我必须使用TLS证书(1.1版)。

我的代码如下:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someapi/request/");

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

request.ProtocolVersion = HttpVersion.Version11;

ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

X509Certificate2 certificate = new X509Certificate2(@"d:\TLScertificate.p12", "password");  

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

try
{
    store.Open(OpenFlags.ReadWrite);

    if (!store.Certificates.Contains(certificate))
    {
        store.Add(certificate);
    }

    int indexOfCertificate = store.Certificates.IndexOf(certificate);
    certificate = store.Certificates[indexOfCertificate];
}
finally
{
    store.Close();
}

request.ClientCertificates.Add(certificate);
request.PreAuthenticate = true;

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

request.GetResponse()期间,我总是会遇到异常:请求被中止:无法创建SSL / TLS安全通道。

提供者回答我:

需要

信任库中的Root Ca v1 test.pem和密钥库中的TLSCertificate

请告诉我如何处理.pem文件? 应该将其添加到请求中,与TLScertificate.p12文件相同吗? 当我在请求中添加第二个X509Certificate2(没有任何密码)时,仍然出现相同的错误。

首先,您可以立即使用已加载的证书

   X509Certificate2 certificate = new X509Certificate2(@"d:\TLScertificate.p12", "password");
    request.ClientCertificates.Add(certificate);

必须将pem文件导入计算机KeyStore mmc->文件->添加/删除管理单元->证书

这可以帮助将pem转换为crt 将.pem转换为.crt和.key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM