LetsEncrypt and CakePhp issue



我正在尝试使用cakepp安装LetsEncrypt,但遇到了一些问题。让我描述一下:

首先,我将在服务器上安装LetsEncrypt,可在CentOS6。

正如在几个网站上提到的,它需要从2.6升级到2.7,因为LetsCrypt需要python 2.7。我做到了。

然后如果我运行./letsencrypt-auto,我会得到

"您的操作系统上还没有可用的安装程序;请尝试运行"letsencrypt auto certonly"以获得可以手动安装的证书"

我知道这是正常的,因为没有适用于centos6的安装程序。

所以我运行./letsencrypt-auto certonly。出现一个窗口。我可以选择:

  1. 将文件放在webroot目录中
  2. 自动使用临时Web服务器

所以我按1。然后我输入我的域名。我看到:

  1. 输入新的webroot

我按"确定",看到我的根目录。我选择/root

然后我有以下错误:

授权过程失败。www.example.com(http-01):urn:acme:error:unauthorized::客户端缺少足够的授权::的响应无效http://www.example.com/.well-known/acme-challenge/-CnpDIgxBB9EOH-BCssGOyiunFjnMlGLWhWw9roE4Ds:"500内部服务器错误Inter"

重要注意事项:-服务器报告了以下错误:

域:www.example.com类型:未经授权详细信息:无效来自的响应http://www.example.com/.well-known
/acme挑战/-CnpDIgxBB9EOH-BCssGOyiunFjnMlGLWhWw9roE4Ds:
"
500内部服务器错误
Inter"

若要修复这些错误,请确保您的域名为
输入正确,并且该域的DNS A记录
包含正确的IP地址。

蛋糕来了。如前所述,我用的是蛋糕。对于这个特定的问题,你似乎需要修改这里提到的htaccess文件

我需要在root htaccessapp/.htaccess 中添加"RewriteRule ^(.well-known/.*)$ $1 [L]"作为第一个重写规则

我做到了。

root .htaccess: 
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^(.well-known/.*)$ $1 [L]
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
   AddDefaultCharset UTF-8 
</IfModule>
app/.htaccess:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(.well-known/.*)$ $1 [L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*)  webroot/$1    [L]
    AddDefaultCharset UTF-8 
 </IfModule>

但我仍然有同样的问题

知道我做错了什么吗?

非常感谢

Cake的webroot有一个带有RewriteCond %{REQUEST_FILENAME} !-d规则的.htaccess,这意味着对于任何与webroot内实际目录匹配的请求,都不会调用Cake。

因此,只需将.well-known目录和其他所有需要的内容放在webroot目录中,就可以很好地访问它们,而不会干扰.htaccess

PS。在某些情况下,Let's encrypt所需的文件不会作为文本返回,在这种情况下,您应该启用headers apache模块(如果尚未启用),并在您的apache或virtualhost配置中放入以下规则:

<IfModule mod_headers.c>
  <LocationMatch "/.well-known/acme-challenge/*">
    Header set Content-Type "text/plain"
  </LocationMatch>
</IfModule>

最新更新