对于你们中的许多人来说,这个问题可能听起来很幼稚,但我更像是一名开发人员而不是系统管理员,因此在深入研究之前获得一些建议会非常有用。
假设我拥有foobar.com
公共网站的域名,并且需要生成 Let's Encrypt 证书对于我的内部服务器也是如此:
我可以使用
foobar.com
域名(例如myInternalServer1.foobar.com
)?否则,它是否需要是一个真正的二级域名,例如
baz.com
,或者我可以使用我实际域名的子域名吗,例如intranet.foobar.com
(例如myInternalServer1.intranet.foobar.com
)?如果我没记错的话,我应该以某种方式指示我的主要 DNS 服务器来处理
foobar.com
,并且设置其他DNS 服务器来处理intranet.foobar.com
, 这是对的吗?虽然我是 的所有者
foobar.com
,但目前它仅用于公共网站;整个“内部网”都在 下运行foobar.local
。我读到,几年来这种方式已被弃用。我应该在主 DNS 服务器中进行更改foobar.local
才能intranet.foobar.com
让 Let's Encrypt 正常工作吗?还是只是建议?一切都基于此(Active Directory 等),所以我想这不是一次简单的迁移,对吗?
先感谢您
答案1
Let's Encrypt 几乎要求您认证的名称可通过公共 IP 地址访问。在 IPv6 普及之前,您的绝大多数服务器很可能不会满足此要求。即使满足此要求,您可能也不会希望在不对大多数服务器进行审查的情况下让 Web 服务通过互联网访问。
一般来说,要解决您的问题,您可以为您的内部网络创建一个私有证书颁发机构 (CA)。只要您的客户信任该颁发机构(通过策略或管理配置文件安装相关 CA 证书),您就可以开始了。
对于您的另一个问题:
从 .local AD 域迁移到 Internet 命名空间的子域等是一项需要仔细规划的任务。最有可能的是,您将创建一个与旧域具有信任关系的全新 AD 域,并逐步将功能迁移到该域。
答案2
首先,也许您根本不需要公共 CA 的证书?如果您控制客户端,那么拥有内部 CA 可能更有意义,在这种情况下,只有您的最后一个问题 (4) 仍然 (部分) 相关。
也就是说,从纯技术“这可以用 Lets Encrypt 来实现吗”的角度来看:
- 是的,这是可能的。但是,这种命名约定将内部主机和公共主机混合在一起,处理起来可能会有问题(一般来说,与证书无关)。无论如何,如果您使用 DNS-01 质询,您可以(但也许不应该)为您控制的域下的任何主机名获取签名证书,无论是否有公共 DNS 或可公开访问的主机中的主机名。
- 从技术 LE 角度来看,这些选项与 1 基本相同。1
和 2 中的所有选项在技术上都是可行的,但 2 中的两个变体对我来说似乎更合理,因为内部名称不会与您的公共 DNS 名称冲突。 - 从 LE 的角度来看,处理内部 DNS 区域的名称服务器可能不是必需的。但是,如果您确实希望能够在内部网络中解析这些名称,那么它可能是必需的。
- TLD
local
实际上根本不应该在普通 DNS 中使用;该名称专门保留用于 mDNS(多播 DNS,如 ZeroConf/Bonjour/...)。
如果您希望公共 CA(LE 或任何其他 CA)为您的内部名称签署证书(显然这不是您想要的,但这似乎是这个问题的前提),那么这只是您必须迁移到使用自己的命名空间的另一个原因。不过,我认为事后修复这个问题绝对不是一件容易的事。