![如何处理离线局域网自签名SSL证书?](https://linux22.com/image/778664/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E7%A6%BB%E7%BA%BF%E5%B1%80%E5%9F%9F%E7%BD%91%E8%87%AA%E7%AD%BE%E5%90%8DSSL%E8%AF%81%E4%B9%A6%EF%BC%9F.png)
我想提供一个包含教程和示例的 git repoWebRTC应用程序,适合刚开始学习且对所涉及的技术完全不了解的人。这些教程在代码编写完成后不需要更改:用户只需下载、提供测试页面并运行即可。WebRTC 是点对点的,因此这些教程必须能够在 LAN 中运行无需访问互联网。
当前行业安全和自签名 SSL 证书的现状存在以下问题:
浏览器要求 WebRTC 具有安全上下文,即通过HTTPS,因此自签名证书必不可少。浏览器提供了例外,
localhost
但那是远远不够,因为学习者不会在手机上运行 Web 服务器来使用 localhost 进行测试...我想支持在 PC 或 Mac 上运行本教程的服务器并从其 LAN 中的其他计算机或手机访问它的情况。典型的解决方案似乎是包括一个自签名证书在 repo 中并使用它来提供教程。但是 LAN IP 可能千差万别,我无法假设人们将运行教程的服务器的 IP 地址。
无法使用多级通配符。因此无法为
192.168.*
(或其他私有 IPv4 范围)颁发自签名证书完全不能使用通配符作为 IP 地址(请参阅https://serverfault.com/a/770225)。我不明白为什么对自签名证书有这样的限制。所以甚至不可能覆盖
192.168.0.*
。说实话,自签名证书不是一个好东西一般的解决方案。即使在为正确的 IP 发出后,信任与不信任的问题仍然会发挥作用,而且完全依赖于浏览器。
例如,Chrome 在出现“不受信任的证书”警告页面后接受它;iOS Safari默默地拒绝。因此,现在有了自签名证书,必须引入一些完全超出范围的额外步骤,以指导用户将自签名根 CA 安装到其设备的受信任存储中。这远非理想。
在不断减少的时间间隔之后,证书将过期,如果保持原样,教程存储库将无法使用。我们不应该每 N 个月就用新证书不断更新存储库。这只是一组静态代码,用于展示特定功能,而不是关于 devops 和服务器管理的练习。
我到处看到的解决方案都是这样的:
“不要使用 IP 地址,使用域名“。不适用。这是一个教程,人们会从他们的笔记本电脑在典型的 LAN 中运行它,其 IP 将是
192.168.1.32
或类似的私有范围,他们可能甚至不了解 DNS 服务器、域名等。此外,请记住,LAN 本身甚至可能无法访问互联网。“构建自动更新证书文件的 CI 作业“。我知道这是我们目前能做的最好的事情,但这似乎是一个荒谬的过度设计的解决方案,从一开始就不应该被要求。这不是面向公众的服务,它是一个包含一些示例教程的 .zip 文件。
总而言之,我觉得 SSL 证书的行业故事过于关注面向互联网的 Web 服务器的“幸福之路”,这些服务器拥有知名域名,而完全有效的案例却被忽略或掩盖了。自签名证书创建规则过于严格,限制了它们的实用性。此外,随着时间的推移,证书的最大有效期越来越短,决策再次被幸福之路用例盲目驱动,而没有努力为有效但不太常见的案例提供解决方案。
按照目前的游戏规则,对于这种私人的一次性项目,
如何使此类应用程序以对最终用户(学习者)造成最少额外努力的方式运行?