1

我的标题可能过于具体——我很难提出这个问题,因为我没有经常处理网络管理,尤其是 SSL / HTTPS。换句话说,“你为什么不做……”的答案 就像是,“我对……了解不多。”

我正在测试,被测系统 (SUT) 是一个使用https://graph.facebook.com调用 Facebook API 的 Web 服务。

我在远程机器上设置了一个测试服务器,它将向http://graph.facebook.com提供页面。我可以使用 SUT 服务器上的主机文件将对http://graph.facebook.com的请求重定向到测试服务器。当我输入以下内容时,这很好用:

curl http://graph.facebook.com

测试服务器接收请求,并返回预期的页面。

但是,如前所述,SUT 不使用 HTTP 站点,而是使用 Facebook API 的 HTTPS 站点(自然而然)。有什么方法可以拦截传出请求并将其重定向到我在另一个站点上运行的 HTTP 服务?我希望能够输入:

curl https://graph.facebook.com

并将其重定向到我在测试服务器上运行的虚假 Facebook 服务。我可以在两端配置服务器。

如果这非常困难,我可能还想提出一个功能请求,以便能够更改 Facebook API 请求的 URL。但是,我认为开发人员正在使用预先存在的 Facebook API 模块,这可能不是直截了当的。(好吧,我很好奇并检查了......快速调查表明该 API 支持处理实际 HTTPS 请求的代码的数据注入,因此他必须实现自己的接口版本,以便他可以传入一个可配置的 URL,我可以从代码外部设置 - 但除非真的有必要,否则我仍然宁愿不分散他的注意力)。

如果相关的话,我在端口 80 上使用asis-server来伪造 Facebook 响应。

4

1 回答 1

1

我们最终使用的解决方案是测试服务器上的一个服务,它拦截 HTTPS 请求并将它们重定向到 HTTP 服务。我们的运维人员为此使用了nginx

我们仍然不确定这是否可以作为 SUT 的模拟 - 这取决于 SUT 是在验证证书信息还是忽略它。我仍然可能需要要求开发人员实现一个功能来支持模拟。

于 2012-11-06T19:40:46.640 回答