答案1
为了验证您是否确实控制您正在请求证书的域,Let's Encrypt 使用基于 HTTP 的质询机制。基本上,Let's Encrypt 会给出certbot
一个长随机字符串,并且在质询过程期间,certbot
将暂时充当 Web 服务器,以便 Let's Encrypt 的验证服务器可以立即尝试联系它并验证完全相同的质询将可从指定主机名上的端口 80 中的 HTTP 服务器检索。
这些错误消息是 Let's Encrypt 验证服务器尝试certbot
通过 HTTP 检索您的质询字符串时收到的消息。似乎已经有一个 Web 服务器在您请求证书的主机名的端口 80 上运行,并且当 Let's Encrypt 发送针对该主机上的质询 URI 的 HTTP 请求时,它响应了 404 错误。
如果您使用sudo certbot certonly --standalone
,您应该首先停止该服务器上使用端口 80 的任何内容,以便certbot
能够启动其临时 HTTP 服务器以响应挑战。
如果您不能这样做,您也许可以使用sudo certbot certonly --webroot
并配置现有的 HTTP 服务器以允许对/.well-known/acme-challenge
服务器端口 80 上的 URI 发出传入请求,然后手动将质询放入其中(或配置certbot
为将其放入以下目录中)通过指定 ) 映射到该 URI --webroot-path /root/of/your/HTTP/namespace
。