![在沒有 Internet 連線的本機網路上的用戶端瀏覽器中使用 HTTPS](https://rvso.com/image/1606699/%E5%9C%A8%E6%B2%92%E6%9C%89%20Internet%20%E9%80%A3%E7%B7%9A%E7%9A%84%E6%9C%AC%E6%A9%9F%E7%B6%B2%E8%B7%AF%E4%B8%8A%E7%9A%84%E7%94%A8%E6%88%B6%E7%AB%AF%E7%80%8F%E8%A6%BD%E5%99%A8%E4%B8%AD%E4%BD%BF%E7%94%A8%20HTTPS.png)
我正在開發一個在伺服器上運行的網路應用程式。會有客戶端(智慧型手機瀏覽器)透過不連接到網路的 WiFi 透過 HTTPS 連接到伺服器。它主要用於為期 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
- 域名系統:
offline.mydomain.com
位於應用程式伺服器的IP上 - 我的應用程式伺服器:這是 HTML
- …
- 客戶:
GET http://crl.ca.com/crls/ca.crl
- 域名系統:
crl.ca.com
位於應用程式伺服器的IP上 - 我的應用程式伺服器:這是 CRL
- …
- 客戶:
GET http://certificate.ca.com/certs/ca.cer
- 域名系統:
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 裝置(至少各一台)進行測試。
連接回真實網路時,裝置根本不應該混淆。