强制网址通过 HTTPS

dan*_*mer 7 firewall https

在我的工作中,http://twitter.com被屏蔽了,但https://twitter没有。有没有办法让所有程序/浏览器使用 HTTPS 协议而不是 HTTP 访问这个 URL?

这特别涉及需要访问站点的第三方客户端,但通常硬编码为 HTTP,无法更改它们。

更新:我试图按照下面的建议创建一个提琴手脚本,但我无法让它正确运行。脚本的答案将是最有帮助的,或者另一种完全由访问组成的方法。

Arj*_*jan 8

我想知道是否所有第三方应用程序都会真正考虑代理设置。或者如果更改系统范围的代理设置可能会干扰其他应用程序。(就像互联网访问需要公司的代理,所以不能仅仅为了重定向流量而改变twitter.com。)幸运的是,当应用程序不使用 HTTPS 时,它找不到中间人。所以:twitter.com使用DeleGate在端口 80 上设置一个中间人

以下步骤已在 Mac OS X 10.6 和 Windows XP 上使用具有完全管理权限的帐户进行测试。

  1. 下载代理。不要让 1990 年代的主页欺骗了您:该程序仍在维护中。

  2. 根据 HTTP 请求中 Host 标头的值,告诉 DeleGate 将端口 80(和 443)上的所有本地请求转发到 HTTPS 服务器。就像在 Intel 上的 Mac(sudo需要使用低于 1024 的特权端口):

    sudo ./macosxi-dg -v -P80,443 \
    SERVER=https \
    RELAY=vhost \
    RESOLV=cache,dns \
    STLS=-fcl,fsv \
    ADMIN=a@b.c
    
    Run Code Online (Sandbox Code Playgroud)

    对于 Windows,如果解压缩到c:\

    cd c:\dg9_9_4\bin
    dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv ADMIN=a@b.c
    
    Run Code Online (Sandbox Code Playgroud)

    如果您需要使用公司的代理来访问 Internet,那么如果您PROXY=proxy.example.com:8080在命令行中添加类似的内容,DeleGate 将很乐意使用它。

  3. 在您的/etc/hosts文件(c:\windows\system32\drivers\etc\hosts在 Windows XP 上;有关其他操作系统上的位置,请参阅维基百科)中,添加以下行以将所有请求定向twitter.com到您自己的计算机。请注意,从域名到 IP 地址的映射不考虑协议。所以:这不仅用于 HTTP,还用于 HTTPS(以及其他所有内容,例如像 一样的命令ping)。

    127.0.0.1 twitter.com
    
    Run Code Online (Sandbox Code Playgroud)
  4. 确保您的浏览器设置为使用代理服务器,或添加twitter.com为例外。以防万一您的浏览器缓存了 Twitter 的 IP 地址,您可能需要重新启动它。

  5. 现在,http://twitter.com实际上得到了你(和你所有的应用程序)https://twitter.com


输出显示确实从https://twitter.com以下位置请求了 HTTPS 站点:

REQUEST - GET / HTTP/1.1
REQUEST = https://twitter.com:443/ GET / HTTP/1.1
[..]
ConnectToServer connected [16] {168.143.161.20:443 <- 192.168.1.68:57067}
## SSLway -- TLSxSNI: sent ru=0 ty=0 nm=localhost
## SSLway ## 0.459622 connected/accepted
## SSLway server's cert. = 
  **subject /
  C=US/
  O=twitter.com/
  OU=GT09721236/
  OU=See www.rapidssl.com/resources/cps (c)09/
  OU=Domain Control Validated - RapidSSL(R)/
  CN=twitter.com
  **issuer /
  C=US/
  O=Equifax Secure Inc./
  CN=Equifax Secure Global eBusiness CA-1
Run Code Online (Sandbox Code Playgroud)


当使用MOUNT="/* https://twitter.com/*"而不是RELAY=vhostthen evenhttp://localhost会给出一个https://twitter.com

通过 DeleGate 推特


当使用 显式请求 HTTPS 时https://twitter.com,受信任的证书链将被破坏:HTTPS 感知应用程序发现中间人攻击,如果它无法请求您的继续许可,则将失败:

中间人


测试后,要在 Windows 上作为服务运行,只需删除该-v参数即可。这会将程序安装为服务。然后它将在后台运行,并询问您是否要在启动时运行它:

Trying to start as a service [DeleGate Server -P80,443] ...
Set Automatic Start on System Startup ? [y] / n :
Run Code Online (Sandbox Code Playgroud)

在不带-v参数的情况下运行上述命令后:请参阅控制面板 » 管理工具 » 服务以手动启动或停止 DeleGate。请注意,此服务将引用您最初启动dg9_9_4.exe程序的位置。因此,您不应删除或移动该程序;确保将下载解压缩到,例如,c:\dg9_9_4避免引用您将来可能删除的某些下载目录。

要删除服务,只需确保为-P参数指定相同的值:

dg9_9_4.exe -P80,443 ADMIN=a@b.c
[..]
The service `DeleGate Server -P80,443' exists.  Delete it ? [y] / n : y
OK. DELETEd the previous service.
Create a new service ? [y] / n : n
Run Code Online (Sandbox Code Playgroud)


最后,人们可能想知道 DeleGate 如何知道 twitter.com 的 IP 地址(因为我们已将其映射到hosts文件中的127.0.0.1 )。DeleGate 实际上检索它本身,因为RESOLV=cache,dns

MOUNT[5]X[2] /* https://twitter.com/*  
{R} SOA got [162.143.168.in-addr.arpa][ns1.dn.net]
  [dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400
Run Code Online (Sandbox Code Playgroud)


crb*_*crb 5

您需要某种具有重写规则功能的代理服务器。我怀疑,在没有提供更好答案的情况下,您可以为Fiddler编写修改规则来执行此操作。Fiddler 规则是用 JavaScript 编写的,网上几个例子。

编辑:请查看并投票支持 Eric Law 在此页面上的回答。