Let's Encrypt 证书问题:https://www.example.com 无法重定向到 https://example.com

2023-11-25

我为网站生成的证书有问题(此处称为example.com).

我可以在浏览器中输入http://www.example.com并成功重定向到https://example.com如我所愿(带有由let's encrypt)。我已经使用 Apache2 的 Rewrite Rules 完成了此重定向。重定向到https://example.com当我打字时也能正常工作http://example.com.

现在,当我直接在浏览器中输入时遇到一个问题https://wwww.example.com: 我收到以下错误:

为了生成让我们加密证书,我执行了以下命令:

./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d example.com --rsa-key-size 4096

我想生成一个证书,适用于example.com and www.example.com: 是上面的命令cerbot-auto这是正确的吗?

看来在我从 Debian 7 迁移到 Debian 10 之前,我有一个*.example.com浏览器证书信息窗口中的名称,但我不确定。

如何打字https://www.example.com并被正确重定向到https://example.com没有出现上图所示的错误?

Update 1

单个证书是否足以执行所有重定向,我的意思是在我的情况下只有一个证书example.com?我以前的操作系统就是这种情况,我认为我只有一个唯一的证书(对于example.com).

我想要有以下重定向:

http://example.com -----> https://example.com

http://www.example.com -----> https://example.com

https://www.example.com -----> https://example.com

包含目录的 URL 除外podcast我想保持 HTTP 模式。

所以,从参考:Apache 将 www 重定向到非 www,将 HTTP 重定向到 HTTPS, I did:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} !^/podcast [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]

这些重写规则看起来正确吗?

不幸的是,如果我直接输入https://www.example.com,我没有被重定向到https://example.com出现上面的警告窗口图,我不知道该怎么办。

Update 2

1)Let's Encrypt 是否提供生成“通配符”证书的可能性?我的意思是在表格下*.example.com当我们在浏览器中查看证书时。

2)此外,有谁知道如何使用 Apache2 Rewrite 规则执行允许重定向的规则https://www.example.com to https://example.com.

为了获得更多信息,我开始悬赏。 在赏金结束时,我会讨论如何进行重定向https://www.example.com to https://example.com(这些 URL 被隐藏在相同的 href 标签下的赏金中,但它们是不同的)。

Update 3

我认为我的问题与通配符证书无关,因为我只想从https://www.example.com to https://example.com (不考虑上面的更新2。当然,一个简单的重写规则就足够了。在我当前的操作系统(Debian 10)之前,我的所有配置文件都运行良好,现在我尝试再次使用它们。特别是,我只使用了通过选项“生成的一个证书”-d example.com“(我没有使用第二个域”www.example.com").

我将尝试修改这些重写规则以获得此重定向,而无需生成www.example.com证书文件。


您可以尝试对原始 certbot-auto 命令运行此小更新,以使您的证书包含额外的内容www.example.com域名 (我相信这就是约翰·汉利在对你原来问题的评论中所说的) 请注意,根据一位消息来源(下面的 LetsEncrypt 社区链接),如果您已经设置了 URL 重写规则,则可能需要先删除它们,然后认证过程才会生效。 (如果您运行命令并收到错误,这可能就是原因)

./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d example.com -d www.example.com --rsa-key-size 4096

可能有帮助的参考资料:

certbot 的命令参数参考(手册页)https://certbot.eff.org/docs/man/certbot.html?highlight=bootstrap

LetsEncrypt 社区关于添加新域的讨论https://community.letsencrypt.org/t/add-a-domain-using-certbot-auto/33660

用于更新现有证书的 LetsEncrypt 文档https://certbot.eff.org/docs/using.html#re-creating-and-updating-existing-certificates请注意,根据手册页,--renew-by-default 意味着 --expand,在这些示例中使用 (--expand 只是让您不必回答是否有意更新现有证书)

我认为您的重写规则看起来大部分都很好,正如前面提到的,可能需要暂时删除它才能生成证书。在这些规则之前您可能需要“RewriteEngine On”:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} !^/podcast [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]

关于通配符证书的问题,它们是受支持的,但只有在附加插件的帮助下才能实现。在这里查看更多内容:https://certbot.eff.org/docs/using.html?highlight=wildcard#id14

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Let's Encrypt 证书问题:https://www.example.com 无法重定向到 https://example.com 的相关文章

随机推荐