0

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

首先,我在装有 CentOS 6 的服务器上安装 LetsEncrypt。

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

然后,如果我跑步,./letsencrypt-auto我会得到

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

我知道这是正常的,因为 CentOS 6 没有安装程序。

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

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

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

  1. 输入一个新的 webroot

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

然后我有以下错误:

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

重要说明: - 服务器报告了以下错误:

域:www.example.com 类型:未授权详细信息:来自http://www.example.com/.well-known
/acme-challenge/-CnpDIgxBB9EOH-BCssGOyiunFjnMlGLWhWw9roE4Ds 的无效响应:

500 Internal Server Error
Inter”

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

这里是 cakephp。如前所述,我正在使用 cakephp。似乎对于这个特定问题,您需要修改 htaccess 文件,如此处所述

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

我做到了。

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>

但我仍然有同样的问题

知道我做错了什么吗?

非常感谢

4

1 回答 1

1

Cakewebroot有一条.htaccesswithRewriteCond %{REQUEST_FILENAME} !-d规则,表示不会为匹配内部实际目录的任何请求调用 cake webroot

因此,只需将.well-known目录和所需的所有其他内容放在webroot目录中,您应该能够很好地访问它们而不会弄乱.htaccess.

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

<IfModule mod_headers.c>
  <LocationMatch "/.well-known/acme-challenge/*">
    Header set Content-Type "text/plain"
  </LocationMatch>
</IfModule>
于 2016-05-16T16:59:29.013 回答