簡體   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