我有以下情况:2台主机,一台是客户端,另一台是HTTPS服务器。
Client (:<brwsr-port>) <=============> Web server (:443)
我安装了Fiddler http://www.telerik.com/fiddler在服务器上,这样我现在就可以在我的服务器上的端口 8888 上运行 Fiddler。
我想达到的情况如下:
|Client (:<brwsr-port>)| <===> |Fiddler (:8888) <===> Web server (:443)|
|-Me-------------------| |-Server--------------------------------|
我想从我的计算机联系 Fiddler,它会将流量重定向到 Web 服务器。然而,Web 服务器使用 HTTPS。
在服务器上,我设置了 Fiddler 来处理 HTTPS 会话并解密它们。我被要求在服务器上安装 Fiddler 的假 CA 证书,我做到了!我还插入了 Fiddler wiki 页面建议的脚本来重定向 HTTPS 流量
// HTTPS redirect -----------------------
FiddlerObject.log("Connect received...");
if (oSession.HTTPMethodIs("CONNECT") && (oSession.PathAndQuery == "<server-addr>:8888")) {
oSession.PathAndQuery = "<server-addr>:443";
}
// --------------------------------------
然而当我尝试时https://myserver:8888/index.html
I fail!
失败详情
在客户端上使用 Fiddler 时,我可以看到 CONNECT 请求启动,但会话失败,因为响应是 HTTP 错误 502。看起来没有人在监听端口 8888。事实上,如果我在服务器上停止 Fiddler,我会得到相同的结果情况:502 网关坏。
请注意,当我尝试时https://myserver/index.html
and https://myserver:443/index.html
一切正常!
Question
我究竟做错了什么?
有没有可能……?
我想,既然 TLS/SSL 可能在端口 443 上工作,我应该让 Fiddler 监听那里并将我的 Web 服务器移动到另一个端口,例如 444(然后我应该在 IIS 上设置端口 444 上的 https 绑定)。这是对的吗?