C#无效的服务器证书处理

时间:2010-01-09 16:47:41

标签: c# httpwebrequest

我在防火墙后面要求我在让我访问互联网之前输入凭据。因此,我的第一个http请求被截获,然后重定向到一个安全服务器,提示我输入我的凭据。因此,当我向google.com发送获取请求时,我会收到以下标题的回复 172.24.64.1是有问题的服务器。

连接关闭

Content-Length 225

缓存控制无缓存

Content-Type text / html

位置https://172.24.64.1:1005/x?70cea2e7d3de9b77

然后我抓住重定向我的响应的Location标头,然后尝试与服务器建立无效证书的连接。

HttpWebRequest loginRequest = (HttpWebRequest)HttpWebRequest.Create(location);

但是,loginRequest.GetResponse()失败并显示异常消息:“基础连接已关闭。无法为SSL / TLS安全通道建立信任关系”

然后我在请求HttpWebResponse的行之前将此行放在我的代码中: Using a self-signed certificate with .NET's HttpWebRequest/Response

ServicePointManager.ServerCertificateValidationCallback = delegate {return true;};

但是,我得到以下例外:

远程服务器返回错误:(401)未经授权。

但是,我在上述标题中没有看到任何身份验证请求。所以我不明白问题是什么。有人可以建议我在这种情况下应该做些什么。

1 个答案:

答案 0 :(得分:0)

401表示连接成功,但现在可能通过NTLM / Negotiate挑战您的身份验证凭据。您需要附加Web请求的凭据才能自动进行身份验证。 (例如,参见HttpWebRequest not passing Credentials

您可以使用Fiddler(www.fiddler2.com)观看此流量并了解正在发生的事情。