我将如何在基于 Web 的设备配置上使用 HTTPS 运行接入点但没有互联网访问权限?

物联网 https tls
2021-06-12 04:01:32

我正在为后院园丁构建一个基于 Raspberry Pi 的设备,该设备具有用于初始配置(包括 Wi-Fi 配置)的网页和接入点。该连接使用 WPA2,该内部网络上仅有的两个设备是设备本身和用户的手机/平板电脑/笔记本电脑。接入点仅在配置期间可见,这降低了外部攻击者猜测出厂随机密码的可能性。所以我加密了流量,几乎可以肯定只有两个节点,短时间内,以及一个随机密码。因此,我可以看到不需要 HTTPS,并且我计划运行 HTTP。

但是,今天我了解到,从 7 月开始,Chrome 将开始将所有 HTTP 站点标记为不安全。[1] 但是由于 Wi-Fi 配置将由接入点完成,因此还没有可用的互联网访问来验证 TLS 证书,我理解这是正确操作所必需的。 [2] 我可以对证书进行自签名,但这会带来其他问题。 [3]

所以我的选择似乎是:

  • 向配置页面显示一条大而可怕的“此网站不安全”消息
  • 向配置页面显示一条大而可怕的“此证书不受信任”消息(例如自签名)

默认情况下,您将如何为设备配置页面提供可爱的绿色锁?

[1] https://www.theverge.com/2018/2/8/16991254/chrome-not-secure-marked-http-encryption-ssl

[2] https://security.stackexchange.com/questions/56389/ssl-certificate-framework-101-how-does-the-browser-actually-verify-the-validity?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

[3] https://www.globalsign.com/en/ssl-information-center/dangers-self-signed-certificates/

1个回答

一种可能的选择是使用 HTTPS 并在设备上发送真实证书:

由于您控制接入点,因此您大概控制了接入点上的 DHCP 服务器,因此您可以让它同时提供 DNS 服务器地址。

此 DNS 服务器可以位于 AP 上,并且可以解析完全限定的主机名以指向它自己。

然后,您可以为该完全限定域名购买证书并将其与产品捆绑在一起以创建完全验证的 HTTPS 连接。

这个想法的一个大问题是您正在传送该域名的私钥和证书,因此您应该假设它会在某个时候受到损害,因此您永远不应该放置一台真正的机器(您可能需要运行一台机器名称在很短的时间内实际获得证书)在互联网上使用该主机名,因为攻击者可以轻松欺骗它。

此外,AP 的固件寿命有限,因为证书将过期(默认情况下可能在一年后 iirc),然后您会收到令人讨厌的证书过期警告。

下一个想法:

放弃 WiFi 接入点模式并使用蓝牙,例如

https://www.hardill.me.uk/wordpress/2016/09/13/provisioning-wifi-iot-devices/

缺点是 Apple 目前不支持 WebBluetooth,但 Windows/Linux/Mac 上的 Chrome 支持,您可以为 Apple 手机/平板电脑用户提供本机 iOS 应用程序。