SSL证书身份验证和C#

时间:2019-05-23 12:00:28

标签: c#

我有一份包含此信息的证书:

  

该证书用于以下目的:
    -向远程计算机证明您的身份
    -确保远程计算机的身份

该证书已经安装在我的服务器上,我必须使用它来调用Soap Web服务。
但是当我尝试调用此Web服务时,出现此错误:

  

基础连接已关闭:发生意外错误   接收。

有人告诉我"certifcate exchnage is not happening from my end"
是什么意思?

服务器配置

  • IIS 8.5
  • Windows Server 2012 r2

    IDE visual studio 2017

    public partial class Form1 : Form
        {
    
            Back2uSubscribeManageService client = null;
            string certName = string.Empty;
            RemoteCertificateValidationCallback 
            chainedServerCertValidationCallback = null;
    
    
     public Form1()
            {
                InitializeComponent();
                chainedServerCertValidationCallback = 
                ServicePointManager.ServerCertificateValidationCallback;
                ServicePointManager.ServerCertificateValidationCallback = new 
            RemoteCertificateValidationCallback(OnValidateServerCertificate);
    
            }
    
    //below the method where I call a method of the web service
    
    private void button1_Click(object sender, EventArgs e)
    {
    
    X509Store computerCaStore = new X509Store(StoreName.My, 
             StoreLocation.LocalMachine);
        computerCaStore.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection certificatesInStore = 
        computerCaStore.Certificates;
        X509Certificate2Collection findResult = 
       certificatesInStore.Find(X509FindType.FindBySubjectName,"*.mydomain.com", false);
                X509Certificate cert;
                cert = findResult[0];
    
    client = new Back2uSubscribeManageService();
    client.ClientCertificates.Add(cert);
    client.Url = url;
    var result = client.subscribeProduct(request);
    }
    }
    //below is the callback method for server certificate validation.
    
     bool OnValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {
    
                X509Store computerCaStore = new X509Store(StoreName.Root, 
                   StoreLocation.LocalMachine);
                X509Certificate2Collection certificatesInStore = 
                  computerCaStore.Certificates;
                X509Certificate2Collection findResult = 
    
      certificatesInStore.Find(X509FindType.FindByIssuerName,"xxxxx", false);
                X509Certificate cert;
                cert = findResult[0];
    
               bool valid = true;
               if (valid)
                {
                    if (chainedServerCertValidationCallback == null)
                    {
                        bool validationResult = 
                            certificate.Issuer.Equals(cert.Issuer);
                        return validationResult;
                    }
                    else
                    {
                        return chainedServerCertValidationCallback(sender, 
                       certificate, chain, sslPolicyErrors);
                    }
                }
                return false;
            }
        }
    

我希望有消息告诉我订阅成功,但是我收到错误消息:

  

基础连接已关闭:发生意外错误   接收。

0 个答案:

没有答案
相关问题