【发布时间】:2011-12-22 19:25:38
【问题描述】:
在我的公司环境中,有一个透明代理需要凭据才能访问互联网(每四个小时一次)。在我的应用程序中,我成功传递了这样的凭据:
var client = new WebClient();
client.Credientals = new NetworkCredential("username", "password");
string result = client.DownloadString("http://...");
// this works!
但是,当我的初始请求是对“https://”网址时,会抛出异常:“底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。”
现在我目前的工作是:
- 捕获访问“https://”url时抛出的WebException
- 将我的凭据添加到对任意“http://”站点的新请求
- (这应该“打开”互联网四个小时的窗口)
- 返回并重试“https://”请求
我想知道是否有更好/更清洁的方法来做到这一点?
【问题讨论】:
-
这似乎是个坏主意。您真的想公开潜在的敏感数据吗?
-
没有敏感数据通过明文发送(据我所知)。我添加到通用“http”请求的凭据被透明代理拦截。然后我重试原始的“https”请求(现在可以使用,因为透明代理已经对我进行了身份验证)
-
听起来您正在构建更多的中间人或直通服务器,而不是真正的代理(相似但不同)。无论哪种方式,如果您允许代理的用户允许任何网站通过它,您可能会暴露敏感数据。
-
基本上我只是想通过我的凭据来让公司互联网允许我访问互联网。当我将它们添加到 http 请求时,一切都很好,但是当我将它们添加到 https 请求时,我得到了 SSL 错误。可能是他们设置公司代理的方式吗?我不确定