无法执行HTTPS本地隧道fith Fiddler2 - 证书问题

时间:2014-09-07 11:24:45

标签: ssl https proxy fiddler

我正在尝试在我的计算机上创建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设置中,我检查了解密检查并安装了证书,如下图所示:

enter image description here

我重新启动Fiddler,它提示我安装假证书,我同意。使用certmgr时,我可以在Windows证书系统存储库中看到证书。这是一张自签名证书。

所以我做的是打开一个浏览器并输入:https://localhost:8888/mypage.html,我得到的是一个错误。 Internet Explorer报告此:

  

错误:地址不匹配。由此提出的安全证书   网站是针对不同网站的地址发布的。这个问题   可能表示试图愚弄你或拦截任何数据......

当我获得证书信息时(基本上联系主机提供的证书被拒绝,可以显示相同的证书),我可以看到拒绝的证书是由Fiddler发布的,主题是 myserver.net

enter image description here

因此证书是正确的,因为它正在验证myserver.net,我发现问题是我的浏览器可能期望主题为localhost的证书。这是真的吗?

如何处理这种情况?

假设

我可以理解,问题是我为网站发出的证书,我没有要求。所以解决方案是使用证书localhost:8888

1 个答案:

答案 0 :(得分:1)

如果证书直接或间接(通过中间证书)由受信任的CA 签名(如果主机名与证书匹配),则证书有效。如果不强制执行最后一个条件,那么拥有来自受信任CA的有效证书的任何人都可以合并任何其他站点。

要使用fiddler而不是遇到此问题,您应该将浏览器配置为使用fiddler作为Web代理,然后使用浏览器中的真实URL而不是fiddler的ip:port。