假设:
服务器:
- 我有一个Debian Squeeze服务器,该服务器可在公共Internet上路由,具有静态IPv4地址。
- 我无限制地访问服务器上的软件。
- 服务器可以侦听任意端口,重新配置防火墙规则,基本上服务器不受限制。
客户:
- 我可以运行Firefox,Java程序,.NET程序以及一些不需要在本地系统上具有管理员访问权限的本机可执行文件(没有管理员权限的锁定Windows桌面)。
- 我可以将Addons安装到Firefox中。
- 我可以在Loopback(
localhost
)接口上的任何端口上监听。因此,上述程序可以绑定到本地端口并执行任意网络I / O,而无需通过代理。 - 所有公共Internet访问都通过限制性HTTP代理进行路由,该HTTP代理会阻止许多站点并进行仔细的状态检查。在端口80上,它仅允许使用HTTP(无TLS / SSL)。在端口443上,它允许
CONNECT
基于SSL / TLS的远程主机不受域名/ IP地址的阻止。 - 限制性HTTP代理不会对通过代理允许的TLS连接执行深度数据包检查,并且不会对这些连接执行中间人攻击。
- 我可以访问的上述服务器没有被代理阻止。
目标:
我想通过上述服务器,通过SSL / TLS 路由Firefox发出的所有 HTTP和HTTPS请求。
有关“目标”的其他说明:
- 即使端点站点(例如
http://superuser.com
)未在服务器上使用SSL / TLS,我仍然希望从客户端到服务器使用SSL / TLS ,并让服务器执行HTTP请求(无论是否加密)- -到达我想要的目的地。 - 我不在乎我的服务器是否“清楚地”查看SSL流量。换句话说,如果远程服务器正在通过进行访问,则我不需要从本地客户端到远程服务器的完整的端到端SSL加密
https://google.com
。换句话说,我信任服务器对我的数据保密。 - 我愿意安装不需要管理员权限并且可以在32位Windows 7上运行的任何软件或Firefox插件。
- 开源软件胜于专有软件,而免费软件胜于需要许可费的软件。
- 尽管我愿意编写代码(如果那是唯一的方法),但它比必须编写新软件更受青睐。
我正在寻找一个松散描述的“解决方案”,该解决方案描述:
- 客户端上需要什么软件?如果您知道某个特定的软件包,请为其命名;否则,请描述客户端软件必须执行的操作。
- 服务器上需要什么软件?如果您知道某个特定的软件包,请为其命名;否则,请描述服务器软件必须执行的操作。
- 如果您在上面命名了特定的软件包,请描述为实现我的目标而进行设置所需的配置参数。
- 如果出于某种原因您认为不可能,请说明原因。
我尝试过的不起作用的事情
squid
在服务器上安装后,我尝试在服务器上建立自己的标准HTTP代理。这没有解决,因为当我通过常规HTTP请求Firefox中的网站时,Firefox也尝试通过常规HTTP访问我的服务器!这是不可接受的,因为我本地网络上的代理当然可以观察和/或阻止我的客户端和服务器之间的常规HTTP通信。- VPN不起作用,甚至无法监听443端口上的TLS上的基于TLS的OpenVPN,因为我没有本地计算机上的权限来安装
tun
可以执行第3层路由的网络适配器,也无法进行任何形式的第2层路由(例如tap
)。简而言之:我需要管理员权限才能安装OpenVPN,即使我临时拥有这些管理员权限,如果他们发现已安装该公司,公司也不会太高兴。Java或.NET程序不那么引人注目,尤其是当它未安装在“添加/删除程序”中且没有像OpenVPN那样的内核驱动程序组件时。
socat
Windows客户端框的管理员权限。