我为网站生成的证书有问题(在此处称为website.com)。
我可以输入浏览器http://www.website.com
,并根据需要成功重定向到https://website.com
(使用let's encrypt
生成的证书)。我已经使用Apache2的重写规则完成了这种重定向。当我键入https://website.com
时,重定向到http://website.com
也可以正常工作。
现在,当我直接在浏览器https://wwww.website.com
中键入文字时,我遇到了一个问题:我收到以下错误消息:
为了生成让我们加密证书的方法,我执行了以下命令:
./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d website.com --rsa-key-size 4096
我想生成同时适用于website.com
和www.website.com
的证书:上面带有cerbot-auto
的命令对此正确吗?
在从Debian 7迁移到Debian 10之前,似乎在浏览器的证书信息窗口中有一个*.website.com
名称,但我不确定。
如何键入https://www.website.com并正确重定向到https://website.com而不出现上图所示的错误?
单个证书是否足以执行所有重定向,就我而言,仅是一个证书website.com
?在我以前的操作系统上就是这种情况,我认为我只有一个uniq证书(用于website.com
)。
我要进行以下重定向:
http://website.com -----> https://website.com
http://www.website.com -----> https://website.com
https://www.website.com -----> https://website.com
除了包含我要保持HTTP模式的目录podcast
的URL。
因此,我从Ref: Apache redirect www to non-www and HTTP to HTTPS开始:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} !^/podcast [NC]
RewriteRule ^ https://website.com%{REQUEST_URI} [L,NE,R=301]
这些重写规则似乎正确吗?
不幸的是,如果我直接输入https://www.website.com
,则不会重定向到https://website.com
,并且出现上面的“警告”窗口,我不知道该怎么办。
1)“让我们加密”是否可以生成“通配符”证书?我的意思是,当我们在浏览器中查看证书时,其形式为*.website.com
。
2)此外,还有谁知道如何使用apache2重写规则执行允许将https://www.website.com重定向到https://website.com的规则。
要获取更多信息,我开始悬赏。 在赏金结束时,我将讨论如何进行从https://www.website.com到https://website.com的重定向(这些URL在相同的href标记下被屏蔽为赏金,但是它们是不同的)。
感谢您的回答。我认为我的问题与通配符证书无关,因为我只想从https://www.website.com重定向到https://website.com(不要考虑上面的UPDATE 2 。当然,这很简单重写规则应该就足够了。在当前操作系统(Debian 10)之前,我运行良好,现在尝试再次使用的所有配置文件都运行得很好。尤其是,我仅使用通过选项“ -d website.com
”生成的一个证书。 (我没有使用第二个域“ www.website.com
”)。
我将尝试修改这些重写规则以获取此重定向,而不必生成www.website.com证书文件。
答案 0 :(得分:1)
您可以尝试对原始certbot-auto命令运行此次要更新,以获取包含附加www.website.com域名的证书 (我相信这就是约翰·汉利(John Hanley)在对您的原始问题的评论中所说的) 请注意,根据一种来源(下面的lettencrypt社区链接),如果您已经设置了URL重写规则,则可能必须删除它们,然后才能进行认证过程。 (如果您运行命令并收到错误,则可能是原因)
./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d website.com -d www.website.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
letencrypt文档以更新现有证书 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://website.com%{REQUEST_URI} [L,NE,R=301]
关于通配符证书的问题,仅在附加插件的帮助下才支持它们。在这里查看更多: https://certbot.eff.org/docs/using.html?highlight=wildcard#id14
答案 1 :(得分:1)
LetsEncrypt提供通配符证书来执行*.website.com
,但是只能通过DNS-01级质询来颁发。
您使用的是HTTP验证,其中上传了特定文件以证明所有权,但是这不足以证明您拥有整个域的所有权。
Certbot对能够自动发布通配符证书的支持有限,但是如果滚动到通配符部分,this可能对您有用。这取决于您拥有的OS + Server + DNS提供程序。基本上,您需要能够与注册商自动创建和修改DNS TXT记录。
我发现使用acme.sh项目来发布通配符证书更加灵活,并且可以与更多的DNS提供程序一起使用,尽管它更多地是手动过程。
如果不支持您域的主要DNS提供程序,则可以进入“别名模式”,在该模式下,您可以使用另一个DNS提供程序上的子域或其他域来支持您的代理域,以验证您拥有自己的主域名。