目前,我能够在一台具有多个子域的服务器上获得一个可用的 Let's Encrypt SSL 证书。
例如服务器 A 上的 m.example.com、www.example.com、example.com
但是,为了在服务器 B 上使用 cdn.example.com,我该如何实现?
我的想法是:
(1)服务器 A 上的单个证书,包含所有子域名:cdn.example.com、m.example.com、www.example.com、example.com,然后将其 rsync 到服务器 B
(2)服务器A上有一个证书,包含:m.example.com,www.example.com,example.com
服务器 B 上的第二个证书,仅包含:cdn.example.com
实施的正确方法或最佳方法是什么?
我不确定是否允许针对一个根域 example.com 生成多个证书
我发现,如果我扩展到多台服务器,更新时 (1) 更容易。
可以这样做吗?或者说这样做是多余的?
更新:
两台服务器中有相同的 SSL 证书 才不是完全回答了我的问题。可接受的解决方案部分回答了 SSL 证书是 FQDN 特定的,而不是机器特定的。
如果是这样的话,我提出的(1)不是一个简化的解决方案吗?
我的问题是:
我可以拥有一个仅包含子域的部分 SSL 证书cdn.example.com
,而忽略服务器 B 上的其他证书,然后为服务器 A 颁发另一个包含根域 、 和 的 SSLexample.com
证书www.example.com
吗m.example.com
?
答案1
恕我直言,每个服务器都应该有自己的私钥,你可以用 LE 颁发任意数量的证书,我能想到的每个 IP 使用多个 SAN 的唯一原因是你的客户端无法执行 SNI(例如:如果你使用 webhooks/api 或其他端点,则使用旧的 java 客户端)。
TLDR;选项 2,只是不要忘记设置自动续订 cronjobs 并输入有效的电子邮件,以防出现问题。
我会为您的应用/资产使用单独的密钥的另一个原因是不同的信任级别。我假设您的图像不如您的代码/内容重要,并且您不会通过 CDN 向用户提交表单,服务器 A 可能在现场,而服务器 B 可能在 SSD 上的公共云中。
答案2
Let's Encrypt 现在具有通配符证书支持,我认为这最适合您的用例。
以下 Let's Encrypt 博客文章介绍了如何使用 Let's Encrypt DNS-01 质询生成通配符证书。
https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578