【问题标题】:Transparent Proxy giving SSL error when accessing via https通过 https 访问时出现 SSL 错误的透明代理
【发布时间】: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 错误。可能是他们设置公司代理的方式吗?我不确定

标签: c# https proxy


【解决方案1】:

您现在使用的是带有身份验证的 HTTP 代理。到现在为止还挺好。但它不适用于 HTTPS 请求,原因如下:

SSL/TLS 是端点安全。这意味着数据必须通过单个加密通道在客户端和服务器之间发送。

当您连接到 HTTP 代理时,您告诉它“获取远程资源并将其发送给我”,这与端点安全性相矛盾。在这里,您没有与远程服务器的直接连接,也无法验证其凭据。代理还可以窥探您的数据。

一般来说,可以使用 HTTPS 连接到常规 HTTP 代理,或者可以要求 HTTP 代理访问 HTTPS 资源,但这会破坏安全原因,在这两种情况下客户端无法验证服务器的凭据,而 HTTP 代理可以记录或更改正在传输的数据。

HTTPS 代理以不同的方式工作。在这里,您告诉 HTTPS 代理服务器“连接到远程地址,然后只重新发送通过的任何内容”。通过这种方式,代理在客户端和服务器之间创建了一个不透明的安全通道,从而保护了端点安全。实际上,HTTPS 代理可用于传输任何流量,不一定是 SSL。

因此,您需要通过发送 CONNECT 请求(包括您的身份验证)来建立隧道,然后通过同一通道发送常规 HTTP GET(URL 中没有主机/地址) - 此请求将发送到目标服务器,不给代理。

我非常怀疑您的 WebClient 是否可以在发送请求之前建立隧道。作为一个选项,您可以使用我们 SecureBlackbox 产品的 HTTPBlackbox 包,它允许您访问 HTTP 和 HTTPS 资源,并支持带有身份验证的 HTTPS 代理(在 SecureBlackbox 中称为 WebTunneling)。

【讨论】:

  • +1 详细说明。我很好奇,是否仍然可以使用 HTTP 代理通过 C# 访问 HTTPs 站点?假设我不介意安全性?
  • @Gabrielius 是的,从协议的角度来看,这只是对“address/path”资源的请求。事实上,对于 HTTP 代理,从哪里获取文件并不重要(假设代理支持请求的协议,而现在该设置通常仅限于 HTTP 和 HTTPS,有时还有 FTP)。
  • 您能告诉我,为什么我在通过 HTTP WebProxy(使用C#)访问 HTTPs 地址时遇到问题?不过,HTTP 站点一切正常。我收到 TimeoutGateway 错误。正如我之前提到的,我不介意代理是否可以看到流量。
  • @Gabrielius 请将您的问题连同所有相关详细信息作为新问题发布。 StackOverflow 不是一个论坛,不适合针对不断变化的主题进行冗长的讨论。
  • 如果您查看我的question 并对此有所了解,我将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 2011-10-01
  • 2018-09-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多