让加密错误“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>