Https “让我们加密错误”;urn:acme:error:unauthorized";

Https “让我们加密错误”;urn:acme:error:unauthorized";,https,ssl-certificate,lets-encrypt,Https,Ssl Certificate,Lets Encrypt,我使用Lets加密并获取错误: urn:acme:error:unauthorized::客户端缺少足够的授权::分析密钥授权文件时出错:密钥授权无效:令牌格式错误 我尝试:sudo服务nginx-stop 但出现错误:nginx服务未加载,所以我在这方面遇到了很多麻烦。基本上,该错误意味着certbot在测试您拥有该站点时无法找到它正在查找的文件。这有许多潜在的原因,所以我将尝试进行总结,因为我在设置此项时遇到了其中的大多数原因。对于更多的参考资料,我发现比文档更有用 首先要注意的是,ngin

我使用Lets加密并获取错误: urn:acme:error:unauthorized::客户端缺少足够的授权::分析密钥授权文件时出错:密钥授权无效:令牌格式错误

我尝试:sudo服务nginx-stop
但出现错误:nginx服务未加载

,所以我在这方面遇到了很多麻烦。基本上,该错误意味着certbot在测试您拥有该站点时无法找到它正在查找的文件。这有许多潜在的原因,所以我将尝试进行总结,因为我在设置此项时遇到了其中的大多数原因。对于更多的参考资料,我发现比文档更有用

首先要注意的是,nginx服务需要运行,acme授权才能工作。看起来你是说它不是,所以从旋转开始

sudo服务nginx启动

这样,这里的所有内容都基于您试图为其创建证书的网站的文件位置。如果您不知道它在哪里,它将位于相关配置文件的
/etc/nginx
下,这主要取决于您的nginx版本,但通常位于
/etc/nginx/nginx.conf
/etc/nginx/sites enabled/[site name]
/etc/nginx/conf/[something].conf
下。请注意,配置文件应该列在
/etc/nginx/nginx.conf
下(至少是它的目录),因此您可以从那里开始

这是一个重要的文件夹,因为这是certbot需要修改的文件夹。它需要在嵌套的文件夹结构中创建一些文件,它试图从中读取的URL将返回这些文件中的数据。它尝试创建的文件夹将位于您为其提供的根目录下的文件夹:

/。著名的/acme挑战

然后,它将尝试创建一个名称不清楚的文件(我认为它是一个GUID),并从URL读取该文件。比如:

http://example.com/.well-known/acme-challenge/abcdefgh12345678

这一点很重要,因为如果根目录配置不当,url将与文件夹不匹配,授权将失败。如果运行certbot时,certbot没有对文件夹的写入权限,则不会创建该文件,因此授权将失败。我遇到了这两个问题

此外,您可能已经注意到上面的URL是
http
而不是
https
。这也很重要。我使用的是现有的加密工具,因此我必须配置NGINX,以允许我查看port
80
下的./well-known文件夹树,而不是
443
,同时仍将我的大部分数据保存在安全的
https
url下。这两件事使得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有权写入文件,或者只需以root用户身份运行:

sudo./certbot auto certonly

获得证书后,还必须在配置中设置证书,但这超出了本问题的范围,所以