具有 301 重定向和 nginx 的域中的 SSL Certbot

具有 301 重定向和 nginx 的域中的 SSL Certbot

我家里有一台服务器,通过我的 OpenWRT 路由器使用动态域名 (mydomain.ddns.net)。现在我想托管一个网站,我在 GoDaddy 购买了一个域名 (www.mynewdomain.com),并设置了带屏蔽的 301 重定向(这样人们就会一直看到 www.mynewdomain.com,而不是 mydomain.ddns.net)。

问题是,当我运行“sudo certbot --nginx”命令时,它可以验证 mydomain.ddns.net,但不能验证 www.mynewdomain.com,因为“客户端缺乏足够的授权::来自 www.mynewdomain.com/.well-known/acme-challenge 的无效响应...”

我一直在搜索和尝试不同的东西,其中大多数与这段代码有关:

location ~ /.well-known {
    default_type "text/plain";
    root /var/www/html;
}

但它不起作用。可能是因为这些解决方案没有考虑到我处于 301 重定向掩码之下。有人能帮我吗?提前谢谢。

答案1

有些事情在情况表述中没有解释清楚,所以我将尝试解释应该如何做,然后您可以随意进一步询问或告诉我更多细节,以便我可以解释。

  1. 在 GoDaddy 上,您也有一台使用 nginx 的服务器?如果是这样,对于域,www.mynewdomain.com最好是在域指向的地方获取证书。如果不对 DNS 或 HTTP 内容进行一些“特殊更改”,Let's Encrypt 就无法为与域指向不同的服务器颁发证书。这是出于安全原因。如果您需要在服务器 A 上为服务器 B 生成证书,那么您需要使用手动模式。手动操作的缺点是所有工作都必须由您自己完成。
  2. 如果您在 GoDaddy 没有服务器,请说明,如果我碰巧知道,我会回复您。要在家中为 GoDaddy 颁发 SSL,您可以执行以下操作:

    certbot -d mynewdomain.com --manual --preferred-challenges dns certonly

然后它会给你一个像这样的输出

Please deploy a DNS TXT record under the name
_acme-challenge.mynewdomain.com with the following value:

IzH_mRZS7DsUxW1UdWjVWihMetUoLEROLHnGzHnTJ34

Before continuing, verify the record is deployed.

然后在 DNS 上创建记录:

_acme-challenge.mynewdomain.com 300 IN TXT "IzH_mRZS7DsUxW1UdWjVWihMetUoLEROLHnGzHnTJ34"

这将允许您生成证书文件。该文件应上传到 GoDaddy 的设备。如果 GoDaddy 应用程序不支持 SSL 终止,则您需要不同的解决方案。

  1. 另一个问题是如何将请求传递到mydomain.ddns.net服务器。如果您确实通过 http 传递请求,则不会出现问题,但人们可以或多或少轻松地通过中间人攻击您。因此,如果安全性至关重要,请不要使用此方法,除非您在家中到 GoDaddy 服务器之间有某种形式的 VPN。如果您想将 https 传递到后端(mydomain.ddns.net),那么您还有另一个问题需要解决,因为您已经在 上解压了 https www.mynewdomain.com。您这里需要的是“上游 SSL”,您可以检查本文档

我刚刚写的内容没有具体解释配置等细节,因为我需要更多关于情况和你真正想要的东西的细节。我希望这能有所帮助,但如果这不是你想要的,请更详细地解释你所拥有的设置。不同的端点是什么,当前的配置,你想如何设置它(哪里必须是 ssl,哪里不是),等等。

相关内容