在没有 Internet 连接的本地网络上的客户端浏览器中使用 HTTPS

McL*_*ayn 5 browser dns wireless-networking https ssl-certificate

我正在开发一个在服务器上运行的网络应用程序。会有客户端(智能手机浏览器)通过不连接到互联网的 WiFi 通过 HTTPS 连接到服务器。它主要用于为期 1 天的活动。

问题:是否可以在没有互联网的情况下使用 HTTPS?

  • 我们无法将任何证书添加到客户端的信任库中。我们也不能以任何其他方式配置客户端。客户将是随机参观活动的人
  • 客户端无法访问互联网来验证 CRL/OCSP。可能只是没有互联网连接

我有一个使用本地 DNS 的想法:

  • 我拥有密钥和受信任的 SSL 证书 (LetsEncrypt)offline.mydomain.com
  • 离线WiFi网络中有一个DNS服务器,将所有DNS地址指向我的应用程序服务器
  • SSL 证书信任链中的所有证书和 CRLoffline.mydomain.com都会下载到应用程序服务器,并且可以在证书的 CDP 和 AIA 中定义的路径上访问它们
  • 应用程序服务器声称正在运行https://offline.mydomain.com(并且DNS服务器指向offline.mydomain.com应用程序服务器)

整个流程是:

  • 客户: GET https://offline.mydomain.com/app
  • DNS: offline.mydomain.com位于应用程序服务器的IP上
  • 我的应用程序服务器:这是 HTML
  • ...
  • 客户: GET http://crl.ca.com/crls/ca.crl
  • DNS: crl.ca.com位于应用程序服务器的IP上
  • 我的应用程序服务器:这是 CRL
  • ...
  • 客户: GET http://certificate.ca.com/certs/ca.cer
  • DNS: certificate.ca.com位于应用程序服务器的IP上
  • 我的应用程序服务器:这是证书
  • ...

但是,我不太了解网络。DNS部分可以吗?

  • 我可以让客户端使用我的本地 DNS 而无需手动配置吗?
  • 连接回真实互联网后,客户会有多少困惑?
  • 智能手机会连接到未连接互联网的 WiFi 吗?

Spi*_*iff 4

我认为客户端不会仅仅因为无法到达 CRL 或 OCSP 服务器而无法连接到 TLS 主机。所以我 99% 确定您需要的是:

  • 由广泛信任的 CA(例如 Let's Encrypt)签署的服务器证书以及匹配的私钥,安装在本地 Web 服务器上。
  • 将相关主机名指向本地服务器 IP 地址的本地 DNS 服务器。
  • DHCP 服务器向客户端设备提供 IP 地址,并告诉它们使用您的 DNS 服务器。

DNS 和 DHCP 是非常轻量级的操作,因此如果您愿意,它们可以轻松地与 HTTPS 服务器在同一台机器上运行。

移动 Wi-Fi 设备很可能启用 DHCP,并且很可能能够使用 DHCP 服务器告诉它们使用的任何 DNS 服务器。因此,我认为您无需担心将“8.8.8.8”/“8.8.4.4”/“1.1.1.1”指向本地 DNS 服务器。但我强烈建议您在活动开始之前就建立一个离线网络原型,并使用各种 iOS、Android、Mac 和 Windows 设备(至少各一台)进行测试。

连接回真实互联网时,设备根本不应该混淆。