2017-09-20 181 views
0

我有一個使用客戶端證書製作HttpWebRequest的小型Windows應用程序。客戶端要求在請求中包含X509Certificate(.cer文件自簽名證書)。但是iam得到以下錯誤「請求被中止,不能創建SSL/TLS安全通道。」我甚至嘗試使用.pfx文件,但得到相同的錯誤。和下面是用於該代碼的相同:無法創建SSL/TLS安全通道。請求已中止c#

ServicePointManager.ServerCertificateValidationCallback = 委託(對象OBJ,X509證書證書,X509Chain鏈,SslPolicyErrors錯誤) { //信任任何證書 返回真; }; ServicePointManager.Expect100Continue = true;

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

      string certPath1 = @"C:\tmpVenDXCCert.cer"; 

      X509Certificate xc = new X509Certificate(certPath1, "[email protected]");   

      HttpWebRequest Request = (HttpWebRequest) 
      WebRequest.Create("https://the-payments-place.com:8449"); 
      Request.ClientCertificates.Add(xc); 
      Request.UserAgent = "Client Cert Sample"; 
      Request.Method = "GET"; 
      HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); 

任何幫助將不勝感激。

問候,

拉姆

回答

0

嘗試以下操作:

  1. 使用 「程序mmc.exe」 安裝在LOCALMACHINE商店證書。請參閱https://msdn.microsoft.com/en-us/library/bb950259(v=bts.10).aspx
  2. 使用下面的代碼

的X509Store店=新的X509Store(StoreName.My,

StoreLocation.LocalMachine); 

     store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 

     X509Certificate2Collection collection = store.Certificates; 

     X509Certificate2Collection certCollection = collection.Find(X509FindType.FindBySubjectName, certificateName,false); 

    var certificate = new X509Certificate2(); 

     certificate = certCollection[0]; 

     webRequest.ClientCertificates.Add(certificate); 
  • 替換爲您的證書的主題名稱certificatename。
  • 相關問題