tat*_*a17 8 https ssl-certificate lets-encrypt
我使用Lets Encrypt并获取错误: urn:acme:error:unauthorized ::客户端缺少足够的授权::解析密钥授权文件时出错:密钥授权无效:格式错误的令牌
我尝试:sudo服务nginx停止 但得到错误:nginx服务未加载
所以我对这些东西有很多麻烦.基本上,错误意味着certbot在测试您拥有该站点时无法找到它正在查找的文件.这有很多潜在的原因,所以我会尝试总结,因为我在设置它时遇到了大部分原因.对于更多参考资料,我发现github自述文件比文档更有用.
首先要注意的是,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以允许我在端口下查看./well-known文件夹树,80而不是443将大部分数据保存在安全httpsURL下.这两件事使得一个有点复杂的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;
}
}
Run Code Online (Sandbox Code Playgroud)
这允许端口80用于与certbot挑战相关的所有内容,同时保留我网站其余部分的安全性.您可以修改目录权限以确保certbot有权写入文件,或者只是以root身份运行它:
sudo ./certbot-auto certonly
获得证书后,您还必须在配置中进行设置,但这不在本问题的范围内,所以这是一个链接.
| 归档时间: |
|
| 查看次数: |
3578 次 |
| 最近记录: |