Hom*_*lli 5 file-permissions nginx lets-encrypt ubuntu-16.04 certbot
我正在尝试在我的Ubuntu 16.0.4服务器上使用certbot和letencrypt,因此可以安装邮件服务器。
我正在像这样运行certbot:
sudo / opt / letsencrypt / certbot-auto certonly --agree-tos --webroot -w / path / to / www / example -d example.com -d www.example.com
我从certbot获得以下输出(如下所示的片段):
Domain: www.example.com
Type: unauthorized
Detail: Invalid response from
http://www.example.com/.well-known/acme-challenge/QEZwFgUGOJqqXHcLmTmkr5z83dbH3QlrIUk1S3JI_cg:
"<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A record(s) for that domain
contain(s) the right IP address.
Run Code Online (Sandbox Code Playgroud)
这是我的目录结构:
root@yourbox:/path/to/www/example$ ls -la
total 12
drwxr-xr-x 3 example root 4096 Nov 1 10:17 .
drwxr-xr-x 5 root webapps 4096 Nov 1 10:13 ..
drwxr-xr-x 2 root root 4096 Nov 1 10:36 .well-known
root@yourbox:/path/to/www/example$
root@yourbox:/path/to/www/example$ cd .well-known/
root@yourbox:/path/to/www/example/.well-known$ ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov 1 10:36 .
drwxr-xr-x 3 example root 4096 Nov 1 10:17 ..
root@yourbox:/path/to/www/example/.well-known$
Run Code Online (Sandbox Code Playgroud)
从上面可以看到挑战文件不存在-(大概是?),因为看来certbot无法写入该文件夹。
但是,我首先需要检查nginx的设置是否正确,以及它是否从句点开始的文件夹中提供文件。
这是nginx网站的配置文件(/ etc / nginx / sites-available / example):
server {
# Allow access to the letsencrypt ACME Challenge
location ~ /\.well-known\/acme-challenge {
allow all;
}
}
Run Code Online (Sandbox Code Playgroud)
我手动创建了一个测试文件(sudo touch / path / to / www / example / fake),并为其赋予了正确的权限:
root@yourbox:/path/to/www/example/.well-known/acme-challenge$ ls -l
total 0
-rw-r--r-- 1 example webapps 0 Nov 1 10:45 fake
Run Code Online (Sandbox Code Playgroud)
然后,我尝试从浏览器访问http://www.example.com/.well-known/acme-challenge/fake-并收到404错误。
这意味着我有两个错误:
.well-known/acme-challenge文件夹提供文件/path/to/www/example夹中的文件权限错误,因此certbot无法将其自动生成的文件写入文件.well-known/acme-challenge夹。我该如何解决这些问题?
您的 Nginx 配置文件没有配置使您的 /path/to/www/example/ 目录可通过网络访问。
这是一个简单的配置,它将让您的站点上线并允许 LetsEncyrpt 创建有效的证书。请记住,端口 80 需要可访问。
server {
listen 80;
server_name www.example.co.uk example.co.uk;
root /path/to/www/example;
access_log /var/log/nginx/example.co.uk.log;
error_log /var/log/nginx/example.co.uk.log;
index index.html index.htm index.php;
location ~ /\.well-known\/acme-challenge {
allow all;
}
location / {
try_files $uri $uri/index.html $uri.html =404;
}
}
Run Code Online (Sandbox Code Playgroud)
相应地更改您的 server_name,或使用您的 /etc/hosts 文件来配置本地域。
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |