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

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

我正在开发一个在服务器上运行的 Web 应用程序。客户端(智能手机浏览器)将通过 HTTPS 通过 WiFi 连接到服务器,而无需连接到互联网。它主要用于 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 吗?

答案1

我认为客户端不会因为无法访问 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 设备(至少每种一台)对其进行测试。

当重新连接真实的互联网时,设备根本不应该感到困惑。

相关内容