我正在开发一个在服务器上运行的 Web 应用程序。客户端(智能手机浏览器)将通过 HTTPS 通过 WiFi 连接到服务器,而无需连接到互联网。它主要用于 1 天活动。
问题:没有互联网的情况下可以使用 HTTPS 吗?
- 我们无法将任何证书添加到客户端的信任库中。我们也无法以任何其他方式配置客户端。客户端将是访问活动的随机人员
- 客户端无法访问互联网来验证 CRL/OCSP。可能没有互联网连接
我有个主意使用本地 DNS:
- 我拥有一个密钥和一个受信任的 SSL 证书 (LetsEncrypt)
offline.mydomain.com
- 离线 WiFi 网络中有一个 DNS 服务器,它将所有 DNS 地址指向我的应用服务器
- SSL 证书信任链中的所有证书和 CRL
offline.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 设备(至少每种一台)对其进行测试。
当重新连接真实的互联网时,设备根本不应该感到困惑。