我正在为后院园丁构建基于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/zh-CN/ssl-information-center/dangers-self-signed-certificates/

评论

您的问题的一部分是基于误解:您实际上并不需要访问整个Internet来验证证书。设备上的证书链文件需要追溯到浏览器已知的信任根。如果不是这样,仅具有I​​nternet访问权限是不够的,实际上必须遵循一个过程才能向浏览器添加附加的CA。

我的主要网站已经拥有大多数浏览器信任的证书。因此,如果使用通配符,那么我会只使用现有的证书说它已经被iPhone和Android信任吗?
不,绝对不可以!如果这样做的话,您将把可以假冒您网站的秘密透露给所有购买您产品之一的人。您为此目的使用的证书仅需用于此目的,并且从一开始就被认为已受到损害。如果需要保护彼此之间的用户,则每个包装盒都需要一个唯一的证书。对于您所控制的客户端(如自定义移动应用程序),使用自定义CA相对容易,但对于仅具有信任根源的浏览器,则要困难得多。

要使每台设备具有唯一的证书,您需要一个愿意对其中的许多设备进行经济签名的CA。如果您可以使自定义客户端像您编写的移动应用程序一样,则可以使它信任您自己的自定义CA。但是,如果需要由具有股票信任列表的股票浏览器信任您的邮箱,则必须使用公认的CA。

谢谢,现在情况变得越来越清楚。您为什么不将其发布为答案,我会投票赞成?

#1 楼

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

由于控制了访问点,因此可以控制访问点上的DHCP服务器,因此可以让它提供DNS服务器该地址同时显示。

此DNS服务器可以位于AP上,并且可以解析标准主机名以指向其自身。

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

这个想法的一个大问题是,您要为该域名提供私钥和证书,因此您应该假设它会在某个时候受到威胁,因此您永远不要在攻击者使用该主机名的Internet上放置一台真正的计算机(您可能需要在很短的时间内运行使用该名称的计算机才能真正获得证书)。能够轻易地欺骗它。

由于证书将过期(可能默认为iirc,可能会在一年后),因此AP的固件的使用寿命也有限,然后您会收到讨厌的证书过期警告。

下一个想法:

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

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

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

评论


因此,我根据您的回答对此进行了构想:在设备中设置DNS和DHCP。 DNS记录之一是device1234.myrealdomain.com,其中myrealdomain.com是um,是我的真实域:-) device1234证书是在离开工厂之前由我的CA签名的,并且iPhone / Android已经嵌入了该信任链,并且知道信任该设备。我无需访问互联网即可进行验证,并且该证书即将到期时,我会下推一个新签署的证书。那行得通吗?

–慢兄弟
18年5月1日在13:08



不,您绝对不能为此目的使用任何有意义的内容(例如您的网站)所依赖的证书,因为您会将其分发到许多盒子中。当您执行此操作时,您将有效地发布假定为秘密的部分,以供所有人查看。您还需要具有比今天许多CA发出的到期时间更长的到期时间的东西-否则,即使关闭了一两年的电源,强制执行的浏览器也无法将其插回电源,甚至足够长时间来进行配置它可以访问Internet,以便可以下载更新的证书来满足浏览器的要求。

–克里斯·斯特拉顿(Chris Stratton)
18年5月1日在13:30



克里斯看看我在您上方的答复,在此情况下,我描述了一种情况,其中我随每台设备一起发送设备特定的证书,而不是主要的网站证书。如果设备离线状态超过一年,我会认为它坏了。这些将不被制造并放在架子上,它们将在出厂前进行配置。

–慢兄弟
18年5月1日13:37



如果您拥有自己的CA,则不需要DNS服务器,则可以为设备的IP地址颁发证书,这使一切变得更加简单。证书可以在您需要时过期

– hardillb
18年5月1日在13:43



90天的证书对于硬件产品的包装是完全,完全,完全,绝对不可行的。这将是客户支持的噩梦,并且可能使您的业务陷入困境。不要这样甚至不要考虑这样做。

–克里斯·斯特拉顿(Chris Stratton)
18年5月2日在2:12