让加密错误“urn:acme:error:unauthorized”
我使用Lets Encrypt并获取错误: urn:acme:error:未授权::客户端缺乏足够的授权:解析密钥授权文件时出错:密钥授权无效:格式错误的令牌
我尝试: sudo服务nginx停止,但得到错误: nginx服务未加载
所以我在这件事上遇到了很多麻烦。 基本上,错误意味着certbot在测试您拥有该站点时无法找到它正在查找的文件。 这有很多可能的原因,所以我会尽量总结一下,因为当我设置它时,我遇到了其中的大部分。 有关更多参考资料,我发现github readme比docs更有用。
首先要注意的是nginx服务需要运行才能使acme授权正常工作。 看起来你不是这么说的,所以先从头开始。
sudo service nginx start
随着这一切,这里的一切都基于你正在尝试创建证书的网站的文件位置。 如果你不知道它在哪里,它会在/etc/nginx
下的相关配置文件中,这很大程度上取决于你的NGINX版本,但通常在/etc/nginx/nginx.conf
或/etc/nginx/sites-enabled/[site-name]
或/etc/nginx/conf/[something].conf
。 请注意,配置文件应在/etc/nginx/nginx.conf
列出(或至少它的目录),以便您可以从那里开始。
这是一个重要的文件夹,因为这是certbot需要修改的文件夹。 它需要在嵌套的文件夹结构中创建一些文件,使其尝试读取的URL从这些文件中返回数据。 它尝试创建的文件夹将位于该文件夹下的根目录下:
/.well-known/acme-challenge
然后它会尝试创建一个名字不明的文件(我认为它是一个GUID),并从URL中读取该文件。 就像是:
http://example.com/.well-known/acme-challenge/abcdefgh12345678
这很重要,因为如果您的根目录配置不当,则url将与该文件夹不匹配,授权将失败。 如果certbot在运行时没有对文件夹的写入权限,则不会创建文件,因此授权将失败。 我遇到了这两个问题。
另外,您可能已经注意到上面的URL是http
不是https
。 这也很重要。 我使用的是现有的加密工具,因此我必须配置NGINX以允许我在端口80
而不是443
下查看./ well- known文件夹树,同时仍然将大部分数据保留在安全https
网址下。 这两件事情使得NGINX文件有点复杂,所以这里有一个可供参考的示例配置。
server {
listen 80;
server_name example.com;
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /home/example;
}
location '/' {
return 301 https://$server_name$request_uri;
}
}
这允许80
端口用于与certbot挑战相关的所有事情,同时保留我网站其他部分的安全性。 您可以修改目录权限,以确保certbot有权写入文件,或者直接以根用户身份运行它:
sudo ./certbot-auto certonly
获得证书后,您还必须在您的配置中进行设置,但这超出了此问题的范围,因此,这里有一个链接。
链接地址: http://www.djcxy.com/p/91277.html上一篇: Lets Encrypt Error "urn:acme:error:unauthorized"
下一篇: setting opacity to all <td> except a child in the last <td>