由于我对 devops 不太熟悉,请耐心等待。
我有一个生产服务器,其中有数据库、登录页面和 API,托管在域中 -https://a.com和https://api.a.com
我建立了该服务器的克隆,并指向https://b.com和https://api.b.com对其进行处理,一切运行正常。
两台服务器都在 Digital Ocean 上,我有指向https://a.com指向当前生产服务器的 IP。我还有指向https://b.com到我想要迁移到的服务器。一旦我迁移,我知道会有一些传播延迟,但这没关系,因为我可以在应用程序中发出通知并阻止任何仍在使用旧服务器的人访问。
我现阶段的计划是:
- 完全设置服务器B
- 删除 b.com 的 A 记录
- 向服务器 A 的 API 的当前用户提供通知
- 将 a.com/api.a.com 的 A 记录切换到新服务器
- 祈祷
我现在唯一的问题是我似乎无法设置 SSL 证书https://a.com在服务器 B 上,没有正确的域指向它。当我将 certbot 与 a.com 一起使用时,它失败了,我不明白为什么(关于 .well-known 中的 acme 挑战失败,但我搜索了互联网,觉得以我目前的技能无法弄清楚)。
我的问题:
- 有没有一种简单的方法可以在仅由 b.com 指向的服务器上为 a.com 设置 SSL 证书
- 有没有比我当前的方法更好的方法?
编辑:我已经弄清楚如何使用以下命令部署 SSL 证书:
certbot certonly --manual --preferred-challenges=dns -d a.com
这手动引导我向 a.com 添加 TXT 记录,以便它可以给我证书,并且它也在 nginx 文件上设置了 443。
答案1
您可以使用 SAN(主体备用名称)设置证书,其中列出所有主机名:a.com
,,,并且您可以在任何主机名上使用此证书(从列表中)b.com
api.a.com
api.b.com
关于 DNS:您可以通过将旧记录的 TTL 设置为一小时来加速记录的传播(在行动前几天这样做)。然后更改 IP,等待一两个小时,将 TTL 改回默认值。