我对我为一个网站生成的证书(在这里被称为example.com)有一个问题。
我可以输入浏览器http://www.example.com,并按照我的要求成功地重定向到https://example.com (使用let's encrypt生成的证书)。我用Apache2重写规则完成了这个重定向。当我键入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和www.example.com的证书:上面的cerbot-auto命令对此正确吗?
似乎在我从Debian 7迁移到Debian 10之前,浏览器的证书信息窗口中有一个*.example.com名称,但我不确定。
如何键入https://www.example.com并正确地重定向到https://example.com而不出现上图所示的错误?
更新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除了包含podcast目录的URL之外,我希望停留在HTTP中。
所以,从Ref: Apache将www重定向到non,HTTP重定向到HTTPS。,我做到了:
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,上面的警告窗口图出现了,我不知道该怎么做。
更新2
1)是否提供了生成“通配符”证书的可能性?我的意思是在浏览器中查看证书时,在表单*.example.com下。
2)此外,有人知道如何用Apache2重写规则--允许将https://www.example.com重定向到https://example.com的规则。
为了获得更多的信息,我开始悬赏。在赏金结束时,我将讨论如何从https://www.example.com重定向到https://example.com (这些URL在相同的href标记下被伪装成赏金,但它们不同)。
更新3
我认为我的问题不是通配符证书,因为我只想从https://www.example.com重定向到https://example.com (没有考虑上面的更新2)。当然,一条简单的重写规则就足够了。在我的当前操作系统(Debian 10)之前,我已经很好地运行了我现在试图再次使用的所有配置文件。特别是,我只使用了一个使用"-d example.com“选项生成的证书(我没有使用第二个域"www.example.com")。
我将尝试修改这些重写规则,以获得重定向,而不必生成www.example.com证书文件。
发布于 2020-02-27 16:59:12
您可以尝试运行这个对您原来的certbot自动命令的小更新,以使您的证书包含附加的www.example.com域名(我相信这是John在他对您的原始问题的评论中所讨论的),请注意,根据一个消息来源(让您在下面加密社区链接),如果您已经设置了它们,在认证过程开始工作之前,您可能不得不删除它们重写规则。(如果您运行该命令并获得一个错误,这可能就是原因)
./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的命令参数引用
让我们对添加新域https://community.letsencrypt.org/t/add-a-domain-using-certbot-auto/33660的社区讨论
根据手册页,让我们来加密用于更新现有证书https://certbot.eff.org/docs/using.html#re-creating-and-updating-existing-certificates注释的文档--默认情况下的续订意味着--展开,这些示例中使用了展开(-展开只会防止您必须回答是否有意更新现有证书)。
我认为您的重写规则看起来很好,就像前面提到的,可能需要暂时删除它才能生成证书。在这些规则之前,您可能需要"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
发布于 2020-02-28 18:02:20
LetsEncrypt提供通配符证书以执行*.example.com,但是它们只能通过DNS-01级别的挑战颁发。
您正在使用HTTP验证,其中上载特定文件以证明所有权,但这不足以证明您拥有整个域的所有权。
Certbot对能够自动发出通配符证书的支持有限,但是如果您滚动到通配符部分,这可能对您有用。它在OS + Server + DNS提供程序方面是有限的。基本上,您需要能够自动创建和修改DNS TXT记录与您的注册。
我发现使用acme.sh项目来颁发通配符证书要灵活得多,并且可以与更多的DNS提供程序一起工作,尽管这更像是一个手动过程。
如果您的域的主DNS提供程序不受支持,您可以查看“别名模式”,您可以在另一个DNS提供程序上使用子域或其他域作为代理域,以验证您是否拥有主域。
https://stackoverflow.com/questions/60268984
复制相似问题