首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让我们加密证书: https://www.example.com不使用重定向到https://example.com

让我们加密证书: https://www.example.com不使用重定向到https://example.com
EN

Stack Overflow用户
提问于 2020-02-17 19:09:34
回答 2查看 834关注 0票数 6

我对我为一个网站生成的证书(在这里被称为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.comwww.example.com的证书:上面的cerbot-auto命令对此正确吗?

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

如何键入https://www.example.com并正确地重定向到https://example.com而不出现上图所示的错误?

更新1

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

我想重定向如下:

代码语言:javascript
复制
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。,我做到了:

代码语言:javascript
复制
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证书文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-27 16:59:12

您可以尝试运行这个对您原来的certbot自动命令的小更新,以使您的证书包含附加的www.example.com域名(我相信这是John在他对您的原始问题的评论中所讨论的),请注意,根据一个消息来源(让您在下面加密社区链接),如果您已经设置了它们,在认证过程开始工作之前,您可能不得不删除它们重写规则。(如果您运行该命令并获得一个错误,这可能就是原因)

代码语言:javascript
复制
./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“:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2020-02-28 18:02:20

LetsEncrypt提供通配符证书以执行*.example.com,但是它们只能通过DNS-01级别的挑战颁发。

您正在使用HTTP验证,其中上载特定文件以证明所有权,但这不足以证明您拥有整个域的所有权。

Certbot对能够自动发出通配符证书的支持有限,但是如果您滚动到通配符部分,可能对您有用。它在OS + Server + DNS提供程序方面是有限的。基本上,您需要能够自动创建和修改DNS TXT记录与您的注册。

我发现使用acme.sh项目来颁发通配符证书要灵活得多,并且可以与更多的DNS提供程序一起工作,尽管这更像是一个手动过程。

如果您的域的主DNS提供程序不受支持,您可以查看“别名模式”,您可以在另一个DNS提供程序上使用子域或其他域作为代理域,以验证您是否拥有主域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60268984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档