我正在尝试使用cakepp安装LetsEncrypt,但遇到了一些问题。让我描述一下:
首先,我将在服务器上安装LetsEncrypt,可在CentOS6。
正如在几个网站上提到的,它需要从2.6升级到2.7,因为LetsCrypt需要python 2.7。我做到了。
然后如果我运行./letsencrypt-auto
,我会得到
"您的操作系统上还没有可用的安装程序;请尝试运行"letsencrypt auto certonly"以获得可以手动安装的证书"
我知道这是正常的,因为没有适用于centos6的安装程序。
所以我运行./letsencrypt-auto certonly
。出现一个窗口。我可以选择:
- 将文件放在webroot目录中
- 自动使用临时Web服务器
所以我按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 htaccess
和app/.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>