为什么我无法为SSL / TLS通道建立信任关系?

时间:2010-12-30 22:08:21

标签: .net asp.net security exception ssl-certificate

我有一段.NET代码在调用HTTPWebRequest.GetRequestStream时出错。以下是错误消息:

  

基础连接已关闭:   无法建立信任关系   用于SSL / TLS安全通道。

我已经阅读了一些建议我可能需要在运行代码的计算机上获得证书的内容,但我相信我拥有所有需要的证书......

这是我查看我是否拥有所需证书的方式:

  1. 使用Firefox点击网络服务。
  2. 查看正在使用的证书 通过查看来访问该Web服务 在安全信息通过 浏览器
  3. 导出证书
  4. 通过导入证书 控制面板中的Internet选项
  5. 这应该足够吗?我仍然得到错误。

    代码:

            var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); //my url
            request.Method = StringUtilities.ConvertToString(httpMethod); // Set the http method GET, POST, etc.
    
            if (postData != null)
            {
                request.ContentLength = postData.Length;
                request.ContentType = contentType;
                using (var dataStream = request.GetRequestStream())
                {
                    dataStream.Write(postData, 0, postData.Length);
                }
            }
    

    更新

    添加我的证书的一些屏幕截图。如果出现任何问题,请告诉我:

    首先,我们拥有Firefox正在使用的证书:

    enter image description here

    接下来,根据MMC,我们拥有Trusted Root Certs中的内容:

    enter image description here

    最后,我们根据MMC获得了我的中级证书:

    enter image description here

    这看起来不错吗?

1 个答案:

答案 0 :(得分:1)

如果使用自签名证书保护第三方Web服务,则需要将其CA签名证书安装到受信任的证书密钥库中

基于代码示例进行编辑。

我已经尝试了一个示例,调用那些facebook网址没有问题,使用下面的代码示例,无需使用下面的代码示例就可以获取一个graph.facebook网址。您是否可以使用您要发布的内容以及哪个网址更新您的示例?

从我可以看到的那一刻起,它似乎起作用,所以只能假设你的电脑上的证书问题仍在执行它。

    {
        string requestUrl = "https://graph.facebook.com/btaylor";

        var request = (HttpWebRequest)HttpWebRequest.Create(requestUrl); //my url
        request.Method = "GET";

        WebResponse response = request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        // TODO: Do whatever you need with the response
        Byte[] myData = ReadFully(responseStream);
        string s = System.Text.ASCIIEncoding.ASCII.GetString(myData);
    }