Let's Encrypt:对内部域使用主题备用名称

Let's Encrypt:对内部域使用主题备用名称

我的 Synology NAS 能够通过 HTTPS 运行 Web 界面。默认情况下,您可以通过其名称(例如mynashttp(s)://myname:5001或访问 NAS http(s)://myname.local。它默认为 的 SSL 证书synology.com

您可以使用 Let's Encrypt 创建一个新证书;将所需的端口从路由器转发到 NAS,我从我拥有的域中创建了一个子域,并更新了 DNS 以指向我的家庭 IP。(例如home.my-domain-i-own.com

我希望可以输入myname;myname.local主题备用名称,这样我就可以通过 HTTPS 在内部浏览我的 NAS 而不会收到警告。但是,Let's Encrypt 显然不接受它无法验证的域名。

我的问题:如何解决我可以在我的域中使用 Let's Encrypt 证书mynas.local而没有任何警告的问题?

答案1

问题

您不拥有该域名mynas.local,因此 Let's Encrypt 当然不会签署证书表明您拥有该域名。如果他们签署了此类证书,浏览器很快就会不再信任 Let's Encrypt。

相反,您需要做的是使用自己的域名来访问 NAS,无论您从哪里访问它。这不仅是因为证书,还因为如果您有任何移动设备需要从 LAN 内部和外部访问 NAS,这会更方便。

听起来您的网络上有一个 NAT,它妨碍了将您的域名指向 NAS 的 IP。如果您没有使用 NAT,那么这就可以正常工作。

解决方案

理想的解决方案是使用没有 NAT 的网络。如果您愿意,仍然可以使用防火墙阻止从外部到 NAS 上除 HTTPS 端口之外的所有连接。

您的 ISP 不太可能为您提供足够的 IPv4 地址来进行这样的设置,因此如果您想以这种方式进行设置,则必须使用 IPv6 来进行。

您可以配置您的 LAN,使 IPv4 由网关进行 NAT,而 IPv6 无需 NAT 即可路由。对于您为 NAS 选择的名称,您可以创建指向 NAT 的 A 记录和指向 NAS 的 AAAA 记录。

然后,LAN 上的客户端将拥有一条直接通往 NAS 的 IPv6 路径,并且应该优先使用 AAAA 记录。使用 IPv4 地址将涉及发夹式 NAT,但这只会在 IPv6 连接失败时用作后备。考虑到客户端和 NAS 之间只有一跳,中间没有路由器,IPv6 连接失败的情况应该很少见。

LAN 之外的客户端将根据所连接的网络使用 IPv4 或 IPv6。如果它们位于仅 IPv4 网络上,则需要通过 NAT 上的端口转发,您应将其配置保持与现在相同的方式。

解决方法

如果您的 ISP 尚不支持 IPv6,那么您的问题就没有完美的解决方案。不过仍有可能的解决方法。

您可以在 NAT 网关上配置自己的 DNS 服务器。此 DNS 服务器需要认为自己对您的域具有权威性,并对其他所有域进行递归。当系统询问您的域时,此 DNS 服务器必须提供本地地址。

LAN 上的客户端将获得一个本地 IP 地址并直接连接到 NAS。LAN 之外的客户端将不会使用 NAT 网关上的 DNS 服务器,而是会从指向外部 IP 的真实权威服务器接收响应。

答案2

mynas.local这是不可能的,因为您在互联网上不拥有这个域名(即所有权)。

答案3

根据 kasperd 的回答,这是一个解决方法的例子。

我使用 DNS 修复了家庭网络中的这个问题。我使用 pi-hole 在 RaspberryPi 上提供 DNS 服务。从仪表板中选择“本地 DNS 记录”,然后将mynas.synology.me主机名与其​​ IP 地址一起输入。

我使用“Synology Active Backup for Business Agent”来保护我的本地 PC,因此当证书更改时,备份会停止,因为代理必须为新证书创建例外。即使证书发生变化,这也应该允许我的备份继续工作。

答案4

Let's Encrypt(或者实际上任何其他公共 CA)不会向您提供域名证书,除非您能证明自己是该域名的合法所有者;这就是全部存在的理由证书:向客户端证明他们确实连接到了他们正在寻找的服务器;如果任何人都可以获得任何域的可信证书,那么这些证书将完全没用。

正如其他人所说,解决方案是使用您实际拥有的域名;您为其获取证书,将其安装在 NAS 上并将您的内部 DNS 指向它,这样当您的浏览器尝试连接到“nas.mydomain.com”时,它就会转到 NAS 的内部 IP 地址(并​​在那里找到有效的证书)。

另一个解决方案是设置内部 CA,确保您的浏览器信任它并使用它来为您的 NAS 创建证书;这将允许您为任何域(但当然只有您会信任他们)。但是,这需要一台运行 CA 的服务器(它是 Windows 服务器中的内置角色,Linux 肯定也有类似的解决方案)。

然而,在我看来,最简单的解决方案是创建一个自签名证书,将其安装在您的 NAS 上,并告诉您的浏览器信任它;这样浏览器就不会再抱怨了。如何做到这一点取决于您使用的浏览器和操作系统。

相关内容