我认为这里的简单答案是不,但我有以下疑问。如果我无需在每个客户端上预先安装证书,如果我自行托管 DNS 服务器,我可以获得对域的 TLS 支持吗?
例如:
serverfault.com
我托管一个映射到我的私有 IP 地址的DNS 服务器。- 在通信的这个阶段会发生一些 TLS 终止,然后我就可以转发到我想要的任何内容
我之所以说不,是因为对于受信任的 CA 或服务Let's Encrypt
,他们会对域名进行外部验证,以确保您通过TXT
记录或文件上传拥有它。
我能假设这是可能的唯一方法是,如果我在每个连接的客户端设备上预先安装一个自定义根 CA,那么我就会看到 TLS,而用户不会有任何怀疑。
答案1
当服务器证书本身不被客户端信任(即在客户端上预先安装为受信任)时,对该证书的信任需要从某处获得。
通常,这是通过使用客户端上预安装的受信任根 CA 来实现的,例如作为操作系统或浏览器安装的一部分。然后从服务器在 TLS 握手中发送的叶证书到客户端系统上预安装的受信任根证书构建信任链,从而从根 CA 到服务器证书建立信任。
当您为不属于您的域名运行自己的 DNS 服务器时,您不会获得这些域名的公开颁发的证书,因为您的 DNS 服务器不会被视为对该域名负责,因此不会被 CA 询问(此处忽略 DNS 欺骗攻击 - 请参阅这里了解 CA 如何防止这种情况发生)。
您得到的只是,DNS 查找会为您控制的使用特定 DNS 服务器的客户端解析您自己的 IP 地址。如果您想自己为这些外部域提供服务(即模拟攻击),您仍然需要为这些客户端提供他们信任的证书 - 如上所述,您无法从客户端信任的 CA 获得该证书。