我处于一个严格的公司环境中。https 流量通过内部代理传出(在这个例子中它是 10.10.04.33:8443),它足够智能,可以直接阻止 ssh 到 ssh.glakspod.org:443。
我能通过代理隧道退出。我在 ssh.glakspod.org:443 设置了一个 apache2 VirtualHost,因此:
服务器管理员[电子邮件保护] 服务器名称 ssh.glakspod.org
<!-- Proxy Section -->
<!-- Used in conjunction with ProxyTunnel -->
<!-- proxytunnel -q -p 10.10.04.33:8443 -r ssh.glakspod.org:443 -d %host:%port -->
ProxyRequests on
ProxyVia on
AllowCONNECT 22
<Proxy *>
Order deny,allow
Deny from all
Allow from 74.101
</Proxy>
到目前为止一切顺利:我使用 CONNECT 访问 Apache 代理,然后 PuTTY 和我的 ssh 服务器握手,我就可以开始比赛了。
然而,这种设置存在两个问题:
内部代理服务器可以嗅探我的 CONNECT 请求,还可以查看正在进行的 SSH 握手。我希望我的桌面和 ssh.glakspod.org:443 之间的整个连接看起来就像 HTTPS 流量,无论内部代理如何仔细检查它。
我无法在代理时将 VirtualHost 设置为常规 https 站点。我希望代理与以下类似内容共存:SSLEngine on SSLProxyEngine on SSLCertificateFile /path/to/ca/samapache.crt SSLCertificateKeyFile /path/to/ca/samapache.key SSLCACertificateFile /path/to/ca/ca.crt
DocumentRoot /mnt/wallabee/www/html <Directory /mnt/wallabee/www/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> <!-- Need a valid client cert to get into the sanctum --> <Directory /mnt/wallabee/www/html/sanctum> SSLVerifyClient require SSLOptions +FakeBasicAuth +ExportCertData SSLVerifyDepth 1 </Directory>
所以我的问题是:如何在与 ProxyTunnel 一起使用的 ssh.glakspod.org:443 VirtualHost 上启用 SSL 支持?
我尝试了 proxytunnel 的 -e、-E 和 -X 标志的各种组合,但都没有任何成功。
我发现的唯一线索是 Apache Bug No. 29744,但我无法找到可以在 Ubuntu Jaunty 的 Apache 版本 2.2.11-2ubuntu2.6 上干净安装的补丁。
提前致谢。
答案1
我从 proxytunnel-users 邮件列表中拼凑出了答案。
首先,查看 Apache 错误报告编号 29744,包含针对我的 Apache 版本 2.2.11-2ubuntu2.6 的补丁的附件被隐藏了,因为它被认为已经过时了。单击附件框右下角的“显示过时”链接即可显示该补丁。
于是我在我的 jaunty box 上执行了 apt-get source apache2,修补了源,执行了 debuild...吃了一些麦片...然后对我构建的所有内容执行了 dpkg -i *.deb。
现在,上面两个独立的 Apache 代码片段可以和谐共存了。
最后一个难题是如何调用 proxytunnel。以下是有效的方法:
proxytunnel -q -X -p 10.10.04.33:8443 -r ssh.glakspod.org:443 -d %主机:%端口 ServerAliveInterval 30
希望这能帮助到其他人!