SSL HttpWebRequest问题

时间:2014-01-15 17:39:33

标签: c# .net http ssl httpwebrequest

我正在尝试访问他们让我通过mmc安装本地证书的api我已经在我的本地Windows 7机器上这样做了所以我可以测试服务。我正在使用一个简单的winforms应用程序进行测试。我假设这是一个自签名的证书服务器端,所以我希望绕过异常以用于开发目的。

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postData);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-uriencoded";
            req.KeepAlive = true;
            req.AllowAutoRedirect = false;

            X509Store store = new X509Store(StoreName.Root,StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly);
            X509Certificate cert = new X509Certificate();
            for (int i = 0; i < store.Certificates.Count; i++)
            {
                if (store.Certificates[i].SerialNumber == "XXXX")
                {
                    cert = store.Certificates[i];
                }
            }
            req.ClientCertificates.Add(cert);
            req.PreAuthenticate = true;

            try
            {
                using (WebResponse resp = req.GetResponse())
                {
                    Stream responseStream = resp.GetResponseStream();
                    using (StreamReader responseStreamReader = new
                    StreamReader(responseStream, new ASCIIEncoding()))
                    {
                        respString = responseStreamReader.ReadToEnd();
                    }
                }
            }
            catch (Exception ex)
            {
                // there is a problem
            }

我在try catch中遇到以下异常: 底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。

  • 我在变量“cert”
  • 中有一个证书对象
  • 当我在浏览器中访问api url时,我收到了警告警告,但随后可以继续获取数据。
  • 我已经尝试过在stackoverflow上推荐的其他修补程序,例如抑制异常。

    ServicePointManager.ServerCertificateValidationCallback = new
     RemoteCertificateValidationCallback  (   委托{return true; }  );

我意识到这些问题中有很多类似于此,相信我,我已经通读了所有这些问题。感谢您提出的任何建议。

1 个答案:

答案 0 :(得分:0)

嘿,以下最终为我修好了。我在浏览器中访问了api服务器地址,并将其证书导出到桌面上的文件中。然后我打开mmc并安装证书,如下面的链接:

http://support.esri.com/en/knowledgebase/techarticles/detail/38408

安装完成后,调用Web服务没有问题,异常消失了。