【问题标题】:Send request from https to local http(s) server从 https 发送请求到本地 http(s) 服务器
【发布时间】:2017-04-10 10:48:52
【问题描述】:

我试图解释我们的问题。

我们正在编写一个小工具(使用 Java 1.8 和 Jetty+Jersey),它提供了一个用于在硬盘驱动器上保存数据(文档等)或直接打印文档的 rest-server。

可以在本地计算机 (localhost) 或本地网络中的不同设备上启动/访问该工具。

问题是如果 https 页面没有经过 ssl 加密,您无法将请求从 https 页面发送到本地工具。

我们需要的是我们工具的 ssl 证书。

但问题是我们无法知道我们的客户想要在哪个设备/IP 地址上运行该工具,您必须将域绑定到 ssl 证书。

我们可以创建 ssl-certificate 并将其与(例如)tool.domain.com 绑定,但该工具可以在 127.0.0.1 以及 192.168.10.2 或类似的东西上运行。

所以我的问题是,有没有办法(以编程方式)“绕过”这堵墙?

一种“方法”是向本地主机文件添加一个条目,但我们希望为客户提供尽可能少的工作,并且您不能在非 root 移动设备上设置主机条目。

编辑:添加了一些代码 sn-ps。

        ServletContextHandler context = new ServletContextHandler(server, "/*");

        // vhosts
//      context.setContextPath("/*");
        context.setVirtualHosts(new String[]{
             "127.0.0.1",
             "192.168.6.195",
             "localhost",
             "tool.domain.com"
        });

我们将虚拟主机添加到码头服务器。我们的域有一个自签名证书(用于测试)。

我们想要归档这样的内容:

这里有一些用于测试/可视化的 JS 代码:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://127.0.0.1:7331/test/echo/test1111');
xhr.setRequestHeader('Host', 'https://tool.domain.com');
xhr.send();

但是 Chrome(我认为其他浏览器也是)阻止了 Host-Header

【问题讨论】:

  • 如果是来自https,最好是https
  • 我们想在我们的工具中添加一个 ssl 证书,但问题是目标。目标可以有每个 ip 地址。这个问题很难解释。

标签: javascript rest ssl jetty


【解决方案1】:

如果您有自己的公司,并且有自己的公司域名,那么这是可能的。

假设你有dominice-so.com

如果您为 self.dominice-so.com 之类的东西创建了一个 dns 条目以始终返回 127.0.0.1,那么您可以在您的产品中为域名 self.dominice-so.com 提供一个有效证书的密钥库/信任库。

浏览器应该能够正常连接,使用类似 ...

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://self.dominice-so.com:7331/test/echo/test1111');
xhr.setRequestHeader('Host', 'https://tool.domain.com');
xhr.send();

由您来保护该密钥库/信任库密码,以免它落入不法之徒手中。 (这超出了这个问题的范围)

【讨论】:

  • 感谢您的回答。但这就是问题所在,我们不仅需要 127.0.0.1,还需要其他 IP 地址,例如 192.168.2.50,如果它是网络 PC(如服务器机器)。我们需要为我们的客户付出尽可能少的努力。一种方法是创建一个通配符证书,并为每个客户创建一个具有所需 IP 地址的子域。但这对我们来说是“很大”的努力。
  • 在这种情况下,您必须根据该环境已知的 CA 生成环境内证书(每个公司可能有不同的 CA 规则)。
  • 我们现在正在实施这种方式。我认为这是最好的方法。再次感谢
猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2015-11-17
  • 1970-01-01
  • 2018-10-04
相关资源
最近更新 更多