首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用用户证书签名的HTTPS连接-不同计算机上的意外行为

问用用户证书签名的HTTPS连接-不同计算机上的意外行为
EN

Stack Overflow用户
提问于 2013-10-14 06:02:23
回答 1查看 556关注 0票数 0

有一项服务。我必须通过HTTPS协议连接到它,通过POST方法上传数据,并下载结果。该连接使用用户专用证书(以*.p12格式)进行身份验证。

为此,我编写了以下功能:

代码语言:javascript
复制
    static public string PostLPDA(string fileName, string URL, string certificateFile)
    {
        X509Certificate cert = new X509Certificate(certificateFile); // importing certificate from file <===== 1

        StreamReader sr = new StreamReader(fileName); 
        string postString = string.Format("Query={0}", sr.ReadToEnd());  // preparing data to send

        const string contentType = "application/x-www-form-urlencoded";
        System.Net.ServicePointManager.Expect100Continue = false;

        CookieContainer cookies = new CookieContainer();
        HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
        webRequest.Method = "POST";
        webRequest.ContentType = contentType;
        webRequest.CookieContainer = cookies;
        webRequest.ContentLength = postString.Length;
        webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1";
        webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        webRequest.ClientCertificates.Add(cert); //adding certificate 
        System.Net.ServicePointManager.ServerCertificateValidationCallback = 
            ((sender, certificate, chain, sslPolicyErrors) => true); // ignore untrusted site error <===== 2

        StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream()); // <===== 3
        requestWriter.Write(postString);
        requestWriter.Close();

        StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
        string responseData = responseReader.ReadToEnd();

        responseReader.Close();
        webRequest.GetResponse().Close();
        return responseData;
    }

在我的电脑上一切正常-没有例外,错误,数据正在成功上传,有正确的响应从服务。

但在其他每台PC上,都有用<====== 3在线标记的异常,并带有消息:

请求被中止:无法创建SSL/TLS安全通道。

我使用的是相同的证书文件、相同的地址和相同的数据。结果就是错误,我想不出是怎么回事。

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-16 08:36:31

好吧,我找到解决办法了。

证书必须在操作系统中注册。否则,它就行不通了。

不管怎样,谢谢你的关注。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19354288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档