【发布时间】:2019-12-05 04:32:05
【问题描述】:
我有一个旧版应用程序,它有一个硬编码的 url(我无权访问源代码),它试图在其中下载文件。网址采用以下形式:
https://pre.hostname.org/index.json
但托管该站点的组织已删除该主机名并正在使用新主机名,因此 URL 应采用以下形式:
https://hostname2.org/pre/index.json
我不拥有应用程序源代码或任何一个网站,但我想到如果我在本地网络服务器上设置重定向并将旧主机名指向我的网络服务器使用C:\windows\system32\drivers\etc\hosts 文件。
在我的网络服务器上的 lighttpd conf 文件中:
$HTTP["scheme"] == "https" {
$HTTP["host"] =~ ".*" {
url.redirect = ( "^/(.*)$" => "https://hostname2.org/pre$0" )
}
}
在主机文件中包含旧版应用程序的客户端计算机上:
0.0.0.0 hostname.org
(0.0.0.0 代表我的网络服务器的主机名以及重定向说明)
通过此设置,我可以在客户端计算机上通过网络浏览器访问旧网址,然后进行重定向。但是,它不适用于旧版应用程序,我认为这是由于 SSL 认证主机名不匹配。
例如,如果我使用 Edge 浏览器,我必须解决警告:
The hostname in the website's security certificate differs from the website you are trying to visit.
Error Code:
DLG_FLAGS_SEC_CERT_CN_INVALID
我在客户端机器、网络服务器等上具有管理员访问权限。我显然信任我的网络服务器,即使它与证书不匹配...
我完全接受这是应该的——这是 https 和 SSL 证书提供的保护的一部分——我要问的是,有没有办法让我的旧应用程序忽略这种情况?一种绕过 https 保护此特定主机名/证书系统范围的方法,以便它对旧版应用程序用于通过 https 下载文件的任何 API 生效?
【问题讨论】:
标签: ssl redirect https spoofing