我在使用 nginx 和 certbot 将 Let's Encrypt SSL 证书应用到我的域时遇到问题。我的 (Nuxtjs) 网站在装有 Ubuntu 18.04 的 VPS 上运行。我想将证书添加到 mydomain.nl 和 staging.mydomain.nl,但无法完成。我对此很陌生,但我以前确实成功做到了这一点,没有任何问题。
如果我是正确的,certbot 会在运行时尝试放置一个文件来验证域sudo certbot --nginx
。但后来我收到以下错误:
Failed authorization procedure. mydomain.nl (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://mydomain.nl/.well-known/acme-challenge/PBjT0nQy7m5_bE42I1jr5mMaYxLMma4ONP9FAUgCD3c [2a02:2268:ffff:ffff::4]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: mydomain.nl
Type: unauthorized
Detail: Invalid response from
http://mydomain.nl/.well-known/acme-challenge/PBjT0nQy7m5_bE42I1jr5mMaYxLMma4ONP9FAUgCD3c
[2a02:2268:ffff:ffff::4]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD
HTML 2.0//EN\">\n<html><head>\n<title>404 Not
Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
我也尝试在配置中添加此块:
location ~ /.well-know/acme-challenge {
allow all;
root /var/www/mydomain.nl/html;
}
但没有成功..
我可以访问我的域上的网站,因此 DNS 应该是正确的。
根据要求,当我运行时,ls -ld /var/www/mydomain.nl/html
我得到以下输出:
drwxrwxr-x 10 kim kim 4096 May 13 20:38 /var/www/mydomain.nl/html
Nginx 用户是www-data
?
有人能在这里指出正确的方向吗?任何帮助将非常感激!
提前致谢!
答案1
发生这种情况是因为 Certbot 验证网站域是否在线。如果收到带有 404 代码的 http 响应,您将无法验证它是否存在,并且不会生成证书。
你可以尝试一下独立模式。
certbot certonly --standalone --preferred-challenges http -d example.com --webroot-path /path/to/root
答案2
结果我的域名注册商为我的域名预先配置了 AAAA 记录。我必须删除此记录才能正常工作。感谢您的思考!