jas*_*per 7 ssl web-applications self-signed
我工作的公司生产的设备通过WiFi提供基于Web的设置和操作界面.该设备通常会在不知名的地方使用,因此无法假设现有WiFi网络的存在:设备的WiFi模块因此作为接入点运行,并通过HTTP提供花哨的HTML5 Web应用程序(唯一的选择)可以使用我在2013年选择的WiFi模块,这是最初实现的.
这起初效果很好,但随着网络的发展,它逐渐崩溃.特别是两个问题:
Web应用程序的一部分涉及映射,当然,能够在地图上显示"你在这里"标记非常有用 - 但Chrome已经拒绝通过HTTP支持HTML5 Geolocation API(甚至没有明确信任的选项)页面),看起来所有其他浏览器都会效仿.
Web应用程序非常大(并且WiFi模块非常慢),所以我使用HTML5应用程序缓存功能在初次使用应用程序后有效地加载即时页面.不幸的是,主流浏览器已经拒绝通过HTTP允许此功能,无论如何该功能已被弃用,并且它的后继者(Service Workers)明确地仅支持HTTPS.
由于原来的WiFi模块不再可用,我不得不重做此功能的硬件和软件.目前可用的模块具有更多的CPU功率和存储(并且成本只有十分之一),因此现在可以做很多事情,例如通过HTTPS提供Web应用程序.我普遍看到这样的设备的建议是获得一个正确的SSL证书,但我不知道这可能在我的情况下如何工作:
当设备实际使用时,通常不会有Internet连接可用,因此无法验证证书.
可以通过IP地址192.168.1.1或LLMNR/mDNS名称访问设备ui.local.不为任何类型的地址提供SSL证书.
我需要它永远工作- 没有机制来更新设备中的证书.即使是10年(许多自签名证书生成器提供的最长有效期)也不够; 我拒绝在设备中构建计划的过时.
也许可以通过向设备添加DNS服务器来进行某种工作,基本上将其作为强制门户,以便可以通过我可以实际购买SSL证书的普通URL来访问它.但是,我发现很多潜在的问题:
如果用户的计算设备设置了静态DNS服务器地址(8.8.8.8或其他),则它会失败,而不是从DHCP接受一个.
如果用户实际上与设备的WiFi连接同时具有Internet连接,则会失败.
如果DNSSEC有效,它将永久失败.
仍然存在证书过期问题.
尽管提出了相反的建议,但似乎只留下了自签名证书作为唯一可行的选择.对他们的一个常见反对意见是"你教导用户忽略有效的安全警告"; 我明白了你的观点,但我应该做些什么呢?
是否有一些我忽略的方法,这会让我的设备继续使用现代浏览器,以及它在2013年的做法?
我同意你的观点,通过 HTTPS 访问没有公共地址的 LAN 中的设备是一个棘手的问题。
恕我直言,应该有一个特殊的 TLS 版本来寻址这些设备,但目前不存在这样的标准。
从我的角度来看,只有自签名证书似乎才可行。然而,当您谈论“自签名证书生成器”时,它让我感到不寒而栗,因为您永远不应该为设备配备预先生成的自签名证书!从安全角度来看,这是您可以做的最糟糕的事情之一,因为预生成的证书和密钥对始终可以从固件中提取,然后用于攻击您的客户之一(联想和其他计算机制造商刚刚了解到,在去年的艰难之路)!对于自签名证书,只有一种方法:
当设备首次启动时,等待足够的数据被处理(播种),以便随机生成器可以生成安全的随机数据。
使用生成的随机数据生成公钥/私钥对
使用之前生成的密钥对生成自签名证书。使用正确的命令,您可以将有效期结束设置为您想要的任何日期。
请注意,您可以随时重新执行步骤 3,例如,当用户重新配置 IP 地址并且您必须在证书中更新该地址时。对于自行开发的客户端(例如在 Android 或 iOS 上),您可以进行公钥固定,这意味着不必(重新)安装证书。
不幸的是,对于网络浏览器来说,即使使用相同的公钥,新证书也意味着您必须重新安装受信任的证书。
关于 HTML5 Geolocation API:不能通过 HTTPS 使用此 API 吗?仅当您在 HTTPS 页面中使用 HTTP 资源时,混合内容才会出现问题,但反之则不应该有问题。
顺便说一句:我发现了一些您可能感兴趣的幻灯片,即使在这种情况下可以访问互联网。也许您从中得到一些新想法:https://www.w3.org/wiki/images/6/6c/TPAC2016_Local_Discovery_and_HTTPS.pdf
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |