【发布时间】:2014-10-31 19:28:30
【问题描述】:
我正在尝试在我的机器上创建一个 HTTPS 隧道。我的意图是将所有对https://localhost:8888/<something>(Fiddler 正在侦听的端口)的请求定向到https://myserver.net/<something>。我根据Fiddler doc使用以下脚本:
static function OnBeforeRequest(oSession: Session) {
// <Fiddler 2 preexisting code>
// HTTPS redirect -----------------------
if (oSession.HTTPMethodIs("CONNECT") &&
(oSession.PathAndQuery == "localhost:8888"))
{
oSession.PathAndQuery = "myserver.net:443";
}
if (oSession.HostnameIs("localhost"))
oSession.hostname = "myserver.net";
// --------------------------------------
// <Fiddler 2 preexisting code>
}
同样在 Fiddler 设置中,我检查了解密检查并安装了证书,如下图所示:
我重新启动 Fiddler,它提示我安装它的假证书,我同意。使用 certmgr 时,我可以在我的 Windows 证书系统存储库中看到证书。这是一个自签名证书。
所以我要做的是打开浏览器并输入:https://localhost:8888/mypage.html,我得到的是一个错误。 Internet Explorer 报告:
错误:地址不匹配。此提供的安全证书 website 是针对不同网站的地址发出的。这个问题 可能表明试图欺骗您或拦截任何数据...
当我得到证书信息时(基本上是被联系的主机提供的证书被拒绝,可以显示相同的证书),我可以看到被拒绝的证书是由 Fiddler 颁发的,主题是 myserver.net 。
所以证书没问题,因为它正在验证myserver.net,我发现问题在于我的浏览器可能期待一个主题为localhost 的证书。是真的吗?
如何处理这种情况?
假设
我可以理解问题是为我没有要求的网站颁发的证书。所以解决方案是使用证明localhost:8888的证书?
【问题讨论】:
-
当然
myserver.net正在监听端口 443 并且启用了 HTTPS。如果我尝试导航到它的地址,我可以得到它!