【问题标题】:How to access localhost via https with a valid certificate如何使用有效证书通过 https 访问 localhost
【发布时间】:2015-03-28 10:45:13
【问题描述】:

我们有一个 Web 应用程序,它应该与具有辅助工具字符的桌面应用程序交互(例如,无需设置,无需管理员权限)。助手通过 http/https 监听绑定到 localhost 的简单端口。

Web 应用程序使用 SSL 证书。每个客户都有自己的机器来存储他的数据。澄清一下:Web 应用程序在服务器上运行,为一个客户但多人提供服务。

问题是,Web 应用程序无法通过 https(使用图像或 iframe)访问帮助工具。主要问题是,在 localhost 上侦听的本地网络服务器没有签名证书。所以网络浏览器阻止了交互。

有什么办法可以解决这个问题吗?我想,我无法获得 localhost 的证书,因为没有人会签署它。

我知道,我不能为此使用 XMLHttpRequest,但这不是重点。

我们的目标是提供对客户友好的 - 无需安装 - 即可使用 - 解决方案。客户不应进行任何配置。只需下载并启动该工具。我们希望与该工具进行直接通信(例如,没有到 Web 服务器的出站方向)。

有什么解决办法吗?

【问题讨论】:

  • 如果应用程序为每个客户在自己的本地机器上运行,那么我想知道你为什么要在 localhost 上使用 https。要嗅探 localhost 上的通信包,攻击者必须能够直接访问机器。发生这种情况时,有更简单的方法可以攻击您的应用程序。因此 https 不会增加您的应用程序的安全性。
  • 抱歉,我添加了一个说明。 Web 应用程序在服务器上运行(每个客户)。帮助工具在客户端机器上运行。它应该添加一些 Web 应用程序无法访问的额外功能,因为服务器无法访问客户端计算机。
  • 您是否尝试过使用 http 连接到 localhost。我要求它检查您的问题是否确实是 ssl 连接的问题,或者应用程序是否在服务器上而不是客户端上启动了对 localhost 的请求。
  • 我正确地与客户交谈(从网络应用程序中)。禁用 https(并切换到 http - web-application AND client)时,一切正常。在客户端为 localhost 安装自签名 CRT 也可以。但这并不能解决“不安装 - 只需工作”的解决方案,因为客户端需要管理员权限才能执行此操作。

标签: ssl https certificate


【解决方案1】:

如果是 Active-directory 环境,您可以创建自己的 CA 并签署证书并在域中分发它们。您也可以通过域策略添加到受信任的站点,这样客户端就不需要配置任何东西。

【讨论】:

  • 每个客户都有不同的服务器/客户端环境。该服务器可通过 Intranet 和 Internet 访问。因此任何 PC 都可以打开 Web 应用程序并启动该工具。
  • 所以,在每个 Intranet 中都会有一台服务器运行 Web 应用程序,所有客户端都将访问该服务器,对吗?通常 SSL 证书绑定到域。如果您能够解析 Intranet 上的主机名,则可以使用自动登录脚本推送 SSL 证书。
  • 嗯,不,那是行不通的。将 Web 应用程序视为网站,可以通过 Intranet 使用,也可以通过 Internet 使用。我无法控制客户环境。可以从外部登录。所以我无法通过登录脚本安装证书。问题是:有什么理由跳过这一步吗?
  • 那么你必须为他们的 web 服务器配置一个公共 ip 并获得一个由受信任的 CA 签名的证书。因此,在使用公共域名从 Intranet 或 Internet 访问它时,您不会出现证书错误。我没有看到任何其他选项。
  • @JordyBaylac 抱歉,我从来没有为此找到可行的解决方案。我们以其他方式解决了它:服务器端解决方案不会向本地主机发出任何 XMLHttpRequests。我们现在只是导航到目标。
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2022-07-29
  • 2011-02-08
相关资源
最近更新 更多