我有点困惑,正在寻找一些指导。我在运行 Unbuntu 20.04 版本 2 的家用机器上运行最新的 Nginx。我在另一台机器上运行 pfSense 作为我的路由器/防火墙。我设置了一个 DDNS ([my_name].ddns.net) 条目来指向我不断变化的 WAN IP 地址。
我有 4 个域名(我的名字的多种拼写方式)。
我能够使用 certbot 为 [my_name].ddns.net URL 创建 Let's Encrypt 证书,方法如下:
sudo /snap/bin/certbot run --cert-name [my_name].ddns.net
它告诉我管道是正确的。我确认证书已生成,nginx 已修改,最重要的是,使用 HTTPS 引用时 URL 是安全的。
我现在正尝试为 4 个主要域之一创建另一个证书:
sudo /snap/bin/certbot run --cert-name [my_name].com -d [my_name].com
此命令正在尝试,但验证失败。我在 mydomain.com 上托管此 URL,并将其配置为标准转发到 [my_name].ddns.net。我唯一能想到的是,mydomain.com 上的更新设置尚未传播。
我是否应该能够做我想做的事情(即创建在与 DDNS 域相同的 Web 服务器上托管的第二个证书,通过标准转发使用 HTTPS 提供相同的网站)?
理想情况下,我希望将这 4 个域名秘密转发到 [my_name].ddns.net,这样用户就不会看到 DDNS URL,但仍然可以从浏览器获取“安全”消息。
这可能吗或者我遗漏了什么?
非常感谢。
答案1
总的来说,是的。您可以为通过普通 DNS 记录(CNAME、A、AAAA)指向您机器的任何有效名称创建任意数量的证书。一些 DNS 提供商和域名注册商具有一项功能(有时称为 ALIAS 记录),可让您将虚拟 CNAME 记录放在域顶点上,因为 CNAME 记录通常不能存在于域顶点上。他们的名称服务器将动态响应别名指向的当前 IP 地址的 A 记录。
Let's Encrypt 验证服务器将始终向 80 端口发出标准 HTTP 请求,http://<name-in-cert>/.well-known/acme-challenge/<token>
并期望在响应正文中收到适当的密钥授权值。它们将遵循 HTTP 3xx 重定向,但我认为它们不会遵循元刷新标记。每个名称和每次续订的令牌和密钥授权值都会有所不同,这就是为什么尝试自动化此过程很重要的原因。