我在 Apache httpd 中设置了一个子域,它是 Tomcat 服务器的前端,httpd 服务器由 Let's Encrypt 保护。
如果我在 conf 文件中激活了以下重写,则 certbot 失败。
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
如果我将其注释掉,则 certbot 可以工作。
我不完全确定,但我认为它是 100% 一致的。当然,使用挑战缓存,我无法在成功续订后的整整一个月内获得另一个有意义的测试结果。
如果我理解正确,您希望将所有非 HTTPS 请求重定向到 HTTPS。所以我猜你的重写是在一个
<VirtualHost *:80>
容器中,用于非 HTTPS 站点。现在您要添加另一个条件,以不重定向 Lets Encrypt 挑战。我认为您可能正在使用HTTP-01 挑战,这意味着您不想将请求重定向到
http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN>
. 那么下面的工作吗?另一种方法,它将重定向 http->https 除了 /.well-known 之外的所有内容: