我有一段.NET代码在调用HTTPWebRequest.GetRequestStream
时出错。以下是错误消息:
基础连接已关闭: 无法建立信任关系 用于SSL / TLS安全通道。
我已经阅读了一些建议我可能需要在运行代码的计算机上获得证书的内容,但我相信我拥有所有需要的证书......
这是我查看我是否拥有所需证书的方式:
这应该足够吗?我仍然得到错误。
代码:
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正在使用的证书:
接下来,根据MMC,我们拥有Trusted Root Certs中的内容:
最后,我们根据MMC获得了我的中级证书:
这看起来不错吗?
答案 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);
}