将http:// localhost作为https:// someOtherDomain提供的简单方法是什么?

Bra*_*rks 6 apache ssl proxy webserver

我运行本地开发Web服务器来测试代码更改.

通常,我必须使用只能安全连接到另一个域的远程服务来测试我的本地更改.

例如,https://external1.com只会https://someOtherDomain.com与之交谈,但我必须测试我的新代码更改的集成https://external1.com

虽然我已经配置了一个有效的设置,但它似乎很复杂,并且需要一点时间才能正确设置.在我看来,很多开发人员都想做同样的事情,所以我的问题是:

是否有一种简单的方法可以将我的本地网络服务器代理为https://someOtherDomain.com

编辑:所以也许应该这样询问 - 是否存在可以传递本地端口和域名的命令行或GUI工具,它通过https://someOtherDomain.com安全地为您的本地端口提供服务- 无配置或是否需要创建SSL证书?当然,如果需要可以通过配置替换SSL证书,那将是很好的,但默认情况下,它通过使用预先安装的SSL证书自动运行.即使我正在使用Apache,我也在寻找一种实际上使用Apache 的解决方案- 它使用其他东西.为什么?因为我希望这个解决方案能够与我们团队中的人们使用的任何其他网络服务器一起工作 - 因为我们都运行不同的堆栈,并且我希望能够让我们任何人安全地为我们的网站提供服务而无需配置每个网站网络服务器单独.

这是我目前使用本地网络服务器并提供服务的设置 https://www.someOtherDomain.com

为了在本地测试,我一直在:

  • 编辑我的主机文件,并添加一个条目,使www.someOtherDomain.com指向我的本地机器,当然这是运行我的开发服务器.这使得我的本地站点现在可用http://www.someOtherDomain.com

    127.0.0.1 www.someOtherDomain.com

  • 使用SSL证书设置和mod_proxy运行Apache,将所有https请求重定向到我的本地http服务器,从而使我的站点可用https://www.someOtherDomain.com.这是我的Apache配置:

    ServerName www.someOtherDomain.com
    
    <Location /balancer-manager>
       SetHandler balancer-manager
    </Location>
    
    ProxyPass /balancer-manager !
    ProxyPass / balancer://mycluster/ 
    
    <Proxy balancer://mycluster>
      BalancerMember http://localhost route=1
    </Proxy>
    ProxyPass / balancer://mycluster
    ProxyPassReverse / balancer://mycluster
    
    SSLHonorCipherOrder On
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite RC4-SHA:HIGH:!ADH
    
    # Rewrite all http requests to https
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    
    Run Code Online (Sandbox Code Playgroud)

我在mac上运行它,但我也对linux的解决方案感兴趣.我已经看到中间代理中的各种Man听起来像是在使用某些配置...但我正在寻找一些非常简单的安装和运行 - 不仅仅是为了我,而是我能告诉团队成员的事情因为我们将来可能都需要做很多事情.

重要说明:我的本地网络服务器没有在端口80上运行,尽管我在上面的示例中已经这样说,以保持简单.我理解mac上的端口80有点特殊,但我很满意所有端口上工作正常端口80的解决方案.

AVe*_*Vee 3

我认为mitmproxy可以为你做到这一点,至少在 Linux 和 os-x 上。我自己没有尝试过,但这个问题似乎表明了它是如何完成的。但这仍然不是一个简单的程序。

然而,我还使用过其他方法:

第一个是最简单的,为develop.mydomain.com 创建一个指向 127.0.0.1 的 DNS 条目,并为您控制 DNS 的(子)域创建一个证书。将该证书传播给所有开发人员。他们仍然需要自己设置 SSL,但不再需要生成证书。它还有一个额外的好处,即每个人都在https://develop.mydomain.com上进行开发,这允许他们共享配置。为了获得奖励积分,请为 *.develop.mydomain.com 创建一个 DNS 条目和一个通配符证书,您的开发人员可以拥有不同的站点(例如https://project1.develop.mydomain.comhttps://project2.develop.mydomain .com)在本地机器上。(与互联网有时告诉您的相反,只要证书对所有指定主机都有效,基于名称的虚拟主机就可以与 SSL 配合使用)。由于每个人的域名都是相同的,您可以考虑获取有效的通配符证书来消除警告。

与下面的解决方案不同,该解决方案甚至可以在办公网络之外工作,当人们在家或在客户那里工作时,这可能是相关的。

在此基础上,您还可以为开发人员计算机的内部 IP 创建 DNS 条目(如果这些条目是固定的)。这确实增加了一些工作,但这意味着本地网络中的其他人可以访问开发人员正在进行的工作,这对于演示、移动设备上的测试等非常方便。

另一种选择是配置一台机器来代理所有开发人员。在 *.develop.mydomain.com 等内容上创建一个指向此盒子内部 IP 的 DNS 条目、匹配的通配符证书,并使用正确的证书配置该盒子一次。现在,您可以为每个代理服务器创建一个虚拟主机,并且所有站点都可以通过本地网络访问,但它确实要求开发人员具有固定的 IP 地址(或通过 DHCP 添加到 DNS 的主机名)。结合 apache 在其配置中包含目录中的所有文件的能力,使得创建基于模板添加新站点的脚本变得很简单。它所要做的就是根据请求的子域和目标写入一个新文件并重新加载 apache 配置。这意味着简单的 PHP 脚本之类的东西就可以完成您希望应用程序执行的操作。