apache - Let's Encrypt 证书的问题:https://www.website.com 无法使用重定向到 https://website.com
问题描述
我为网站(此处称为 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而不会出现上图所示的错误?
更新 1
一个证书是否足以执行所有重定向,我的意思是在我的情况下只有一个证书website.com
?我以前的操作系统就是这种情况,我认为我只有一个 uniq 证书(for website.com
)。
我想要以下重定向:
http://website.com -----> https://website.com
http://www.website.com -----> https://website.com
https://www.website.com -----> https://website.com
除了包含podcast
我想保持 HTTP 模式的目录的 URL。
所以,从Ref: Apache redirect www 到 non-www 和 HTTP 到 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
并且出现上图的警告窗口,我不知道该怎么办。
更新 2
1) Let's Encrypt 是否提供生成“通配符”证书的可能性?,我的意思是*.website.com
当我们在浏览器中查看证书时的表单。
2)此外,有谁知道如何使用 apache2 重写规则允许将 https://www.website.com 重定向到https://website.com的规则。
为了获得更多信息,我开始赏金。在赏金结束时,我讨论了如何从https://www.website.com重定向到https://website.com(这些 URL 在相同的 href 标签下被屏蔽为赏金,但它们是不同的)。
更新 3
感谢您的回答。我认为我的问题与通配符证书无关,因为我只想从https://www.website.com重定向到https://website.com(不要考虑上面的 UPDATE 2。当然是简单的重写规则应该足够了。在我当前的操作系统(Debian 10)之前,我运行良好的所有配置文件,我现在再次尝试使用。特别是,我只使用了一个通过选项“ -d website.com
”生成的证书(我没有使用第二个域“ www.website.com
”)。
我将尝试修改这些重写规则以获取此重定向,而不必生成 www.website.com 证书文件。
解决方案
LetsEncrypt 提供了通配符证书,*.website.com
但是它们只能通过 DNS-01 级别的挑战来颁发。
您正在使用 HTTP 验证,其中上传特定文件以证明所有权,但这不足以证明您拥有整个域的所有权。
Certbot 对能够自动颁发通配符证书的支持有限,但是如果您滚动到通配符部分,这可能对您有用。您拥有的操作系统 + 服务器 + DNS 提供商受到限制。基本上,您需要能够通过您的注册商自动创建和修改 DNS TXT 记录。
我发现使用acme.sh项目来颁发通配符证书更加灵活,并且可以与更多的 DNS 提供商一起使用,尽管它更像是一个手动过程。
如果您的域的主要 DNS 提供商不受支持,您可以查看“别名模式”,在该模式下,您可以使用另一个受支持的 DNS 提供商上的子域或其他域作为您的代理域,以验证您是否拥有您的主域。
推荐阅读
- python - 如何删除列表中的`''`
- android - 输出为空时 BufferedReader 卡住
- xpath - ImportXML 解析错误 - 使用 excel 表抓取维基百科
- angular - 传单:无效的 LatLng 对象:(未定义,未定义)
- java - 为什么刷新访问令牌未经授权?
- python - 使用 Numpy 如何将给定的 3D 数组转换为 3x3 矩阵的数组
- node.js - 如何使用 vuex 和 socketio 制作实时 crud?
- reactjs - 当我想在登录后重定向时使用 react-azure-adb2c 我得到状态不匹配并看到一个空白页面,如何解决这个问题?
- eclipse - 如何在 Eclipse 中增加 junit 查看器的字体大小?
- opengl - 如果纹理通道数和图像通道数之间存在差异,OpenGL 中会发生什么