为内部OTS硬件设备配置TLS证书的技术方案

本文详细介绍了如何为离线硬件设备配置有效TLS证书的创新方案,通过Let's Encrypt和DNS验证实现内部设备的安全HTTPS访问,避免浏览器安全警告问题。

为内部OTS硬件设备配置TLS证书

很久以前,一位客户请我测试一款接入家庭网络提供服务的硬件设备。该设备通常通过HTTP的Web界面进行管理。测试时正值Chrome即将更新,新版本会突出显示HTTP访问和提交内容的安全风险。我与客户讨论了这一变化,询问他们是否有应对计划。

他们考虑过使用自签名证书,但这同样会显示安全警告,迫使用户忽略警告接受证书。由于该硬件旨在增强网络安全,这种做法显然不妥。

为此,我与TLS专家Scott Helme讨论后,设计出以下工作流程,使内部设备能获得有效的TLS证书。

参与方

  • OTS:需要证书的现成硬件设备
  • HQ:制造商
  • LE:Let’s Encrypt

设置

制造商需要拥有一个专门用于OTS设备的域名,例如主域为ots.space,可使用ots-cert.space作为设备域。

工作流程

  1. OTS首次启动时生成随机令牌,并通过HTTPS将其与IP地址发送给HQ。
  2. HQ为设备生成唯一名称(如nifty-babbage)。
  3. HQ在设备域上为设备名称创建DNS记录(如nifty-babbage.ots-cert.space A 192.168.0.7)。
  4. HQ将名称返回给OTS。
  5. OTS生成私钥和CSR,发送给HQ。
  6. HQ使用CSR和LE的DNS验证为子域名生成证书。
  7. HQ创建包含证书和认证令牌的包。
  8. OTS轮询HQ检查包是否就绪,使用初始令牌作为标识。下载包后安装证书,并设置HTTP到HTTPS的重定向(如http://192.168.0.7重定向到https://nifty-babbage.ots-cert.space)。
  9. OTS每天检查证书有效期,到期前7天使用认证令牌请求新证书。设备重启时也执行此流程。

注意事项

  • LE证书会提交到证书透明度日志,可能暴露设备名称,但无法关联到具体用户。
  • 设备名称可自定义,但可能增加信息泄露风险。
  • LE证书有效期为90天,设备长期离线后启动时会自动更新证书。
  • 对于DHCP网络,IP变化时可更新DNS记录,短TTL可减少问题。
  • 为防止DDoS,每日任务应随机时间执行。
  • 生产时可预装客户端证书替代随机令牌,但需考虑长期有效性。
  • 私钥仅在OTS生成,不会通过网络传输。

概念验证

本文提供了完整可运行的概念验证,设置简单,易于实施。

查看演示

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计