目标是拥有一个具有有效 Let's Encrypt 证书的本地服务器。
我希望通过 mydomain.com 访问 IP 10.10.10.5。因此我有一个本地 DNS 服务器将该 IP 返回。对于公共的 mydomain.com 将解析为指向路由器的正确 IP,然后路由器将端口转发到本地 IP 10.10.10.5。
这样可行吗?我不太确定,据我所知证书已绑定到域名;但浏览器可能还是会阻止它 - 因为 Let's Encrypt 不为本地网络颁发证书?
答案1
Let's Encrypt 不为本地网络颁发证书
正如您正确指出的那样,证书已绑定到域名,并且只针对域名。它没有 IP 地址的记录——因此,如果您通过域名访问,浏览器将没有任何理由关心它位于哪种 IP 地址。(此外,您提到域名无论如何都会解析为公共地址。)
另一方面,你不能直接地访问https://10.10.10.5
,其中将要导致不匹配。
(也就是说,如果证书是专门颁发的为了IP 地址(LE 不提供,但其他一些 CA 提供)那么是的,它需要是一个公共地址。但这里的情况并非如此。)
所以现在您唯一的要求是能够通过 LE 支持的验证机制之一。
如果如您所说,域名将解析为公共地址并最终指向可公开访问的 Web 服务器,则 HTTP 验证将正常工作。(LE 不关心幕后发生什么,只要验证服务器可以获取
http://<yourdomain>/.well-known/etcetera
)即使 Web 服务器不可公开访问(或者根本没有 Web 服务器),LE 也支持基于 DNS 的验证,这只需要您向公共域添加一些额外的 DNS 记录。
关于端口转发的注意事项:如果您的域名解析为民众IP 地址,从 LAN 内部访问该地址需要在路由器中启用“NAT 反射/发夹/环回”;否则根本无法从 LAN 访问该域。