【发布时间】:2022-04-22 15:18:06
【问题描述】:
我对 ssl 的东西很陌生,但恐怕我能猜到以下问题/问题的最终答案:
我们正在构建硬件(我们称它们为服务器),这些硬件将在其生命周期内进行 IP 地址修改。每个服务器都必须以安全的方式访问。我们计划使用 TLS 1.3 安全连接在服务器上执行一些操作(更新固件、更改配置等)。因此,我们需要为服务器提供一个证书(每个),以便他们可以声明自己的身份。 PKI 问题超出了这个问题的范围(我们假设),我们可以理所当然地认为客户端和服务器将共享一个共同的受信任 CA 以确保 SSL 握手正常。服务器将仅在已配置(可更改)的 IP 地址上提供 http 连接。循环中不涉及 DNS。
我们想知道如何正确设置服务器的证书。
由于IP会发生变化,因此不能作为服务器证书中的通用名称。
因此,我们正在考虑使用更持久的东西,例如序列号或 MAC 地址。
问题是,由于循环中没有 DNS,客户端无法向www.serialNumberOfServer.com 发出 http 请求,必须连接到http://x.y.z.t(这将经常更改(至少频繁到我们不会每次都颁发一个新服务器的证书))
如果我们做对了,ssl 握手要求主机名(在我们要连接的 URL 中)匹配服务器证书的 commonName 或其主题的备用名称 (SAN) 之一。正确的?在这里,它将是 x.y.z.t。 所以我们认为我们陷入了这样一种情况:服务器无法使用它的 IP 来证明自己的身份,而客户端想要专门使用它来连接服务器。
有什么解决办法吗?
我们错过了什么吗? 任何帮助将非常(非常)感激。不要犹豫,你应该需要更详细的解释!
不管怎样,开发环境将是使用 QNetworkAccessManager/QSSlstuffs 框架的 Qt。
【问题讨论】:
标签: ssl certificate hostname