目前,我可以获得一个在具有多个子域的服务器上工作的 Let's Encrypt SSL 证书。
例如。服务器 A 上的 m.example.com、www.example.com、example.com
但是,为了使用例如。服务器 B 上的 cdn.example.com,我该如何实现?
我的想法是:
(1) Server A上的单一证书,包含所有子域:cdn.example.com, m.example.com, www.example.com, example.com,然后rsync到Server B
(2) Server 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 颁发另一个 SSL 证书,其中包含根域example.com
、www.example.com
和m.example.com
?
恕我直言,每台服务器都应该有自己的私钥,您可以使用 LE 颁发任意数量的证书,我能想到的每个 IP 使用多个 SAN 的唯一原因是您的客户端无法执行 SNI(例如:旧的 java 客户端如果您正在使用 webhook/api 或其他端点)。
TLDR;选项 2,只是不要忘记设置您的自动续订 cronjobs 并输入有效的电子邮件,以防出现问题。
我会为您的应用程序/资产使用单独密钥的另一个原因是信任级别不同。我认为您的图像与您的代码/内容无关紧要,并且您不会通过 CDN 向用户提交表单,服务器 A 可能在现场,服务器 B 可能在 SSD 上的公共云中。
Let's Encrypt 现在支持通配符证书,我认为它最适合您的用例。
以下 Let's Encrypt 博客文章描述了如何使用 Let's Encrypt DNS-01 质询生成通配符证书。
https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578