具有本地 IP 的设备的自签名证书

Jai*_*ime 7 ssl pfx x509certificate tls1.2 asp.net-core

设想:

  • 我们有一个类似于 WiFi 路由器的设备,它暴露了 UI 和 API
  • 该设备将在我们无法控制的任何 LAN 上运行,就像 WiFi 路由器在任何房子上运行一样。
  • 该设备不属于任何域,可通过浏览器通过其 IP 地址(即 192.168.1.100)访问。
  • 协议应为HTTPS
  • 使用的软件是 Windows 上的 .net Core/Kestrel
  • 目前,我们在所有浏览器中都有警告,指出设备的证书无效。
  • 约束:该设备应可由任何机器(台式机/平板电脑)访问,并且不能在客户端机器中安装或配置任何东西。

问题是:删除警告的最佳方法什么?我们了解到,私有/本地 IP 不能有常规证书。

自签名证书似乎可以工作几天,然后再次出现错误。

当地环境

pok*_*oke 5

无法为 IP 地址颁发 SSL 证书;您必须有一个实际名称来为其创建证书。为了获得这样的名称,您需要一个 DNS。由于您无权访问该本地网络的内部 DNS,因此您必须为此使用公共 DNS 服务器。

这假设该网络内的设备确实可以访问互联网。如果他们不这样做,那么你就完全不走运了。

如果可以访问互联网,那么您只需将公共(子)域指向您的本地 IP 地址即可。基本上,为您拥有的域配置 DNS,以便该域或其子域之一上有一个 A 条目,指向您的本地 IP 地址192.168.1.100

这样,您可以将该公共域传达给其他人,当他们尝试解析该域时,他们将访问 DNS,从而提供本地 IP 地址。因此,该网络中的设备可以访问您的设备并访问它。由于他们是通过该域访问它,因此通常会接受该域的证书。

从理论上讲,这很有效。在实践中,这可能有点复杂或昂贵。服务器证书过期,因此您必须将证书(安全地!)包含在您的设备中,并提供一些方法来最终在它过期时更新它。免费证书,例如来自letsencrypt 的证书,将在几周内过期,但金钱可以为您购买过期较慢的证书。

但最终还是会有些痛苦。但不是因为域名,而是因为证书——至少如果你想要一个自动信任的证书。否则,你会回到最初。

  • 根据这篇文章,Plex 也是这样做的:https://blog.filippo.io/how-plex-is-doing-https-for-all-its-users/ (2认同)