首先
您不需要拥有该域,您只需能够将文件复制到为该域提供服务的位置。 (听起来你都准备好了)
第二
你用的是什么工具?您提供的错误消息让我认为客户端配置错误。挑战名称通常类似于https://example.com/.well-known/acme-challenge/jQqx6qlM8u3wpi88N6lwvFd7SA07oK468mB1x4YIk1g。将其与您的错误进行比较:
Error: http://example.com/.well-known/acme-challenge/letsencrypt_example.com is not reachable. Aborting the script.
第三
我是Greenlock 的作者,它与 Let's Encrypt 兼容。我相信它会为你工作。
安装
# Feel free to read the source first
curl -fsS https://get.greenlock.app/ | bash
与现有网络服务器一起使用:
让我们这么说:
- 您使用的是 Apache 或 Nginx。
- 您确认
ping example.com 提供了您服务器的IP
- 您在端口 80 上公开 http(否则验证将失败)
- 您的网站位于
/srv/www/example.com
- 您的电子邮件是
jon@example.com(必须是真实的电子邮件地址)
- 您希望将证书存储为
/etc/acme/live/example.com/fullchain.pem
这是命令的样子:
sudo greenlock certonly --webroot \
--acme-version draft-11 --acme-url https://acme-v02.api.letsencrypt.org/directory \
--agree-tos --email jon@example.com --domains example.com \
--community-member \
--root /srv/www/example.com \
--config-dir /etc/acme
如果这在第一次尝试时不起作用,则在调试时将--acme-url https://acme-v02.api.letsencrypt.org/directory 更改为--acme-url https://acme-staging-v02.api.letsencrypt.org/directory。否则,您的服务器可能会因为太多错误请求而被 Let's Encrypt 阻止。只需知道您必须从暂存环境中删除证书并使用生产 url 重试,因为该工具无法判断哪些证书是“生产”,哪些是“测试”。
--community-member 标志是可选的,但会为我提供分析,并允许我就重要或强制性更改以及其他相关更新与您联系。
收到成功消息后,您可以在网络服务器配置中使用这些证书并重新启动它。
这也可以作为一项 cron 工作。您可以每天运行它,它只会在大约 75 天后更新证书。您还可以放置一个 cron 作业,每隔几天将“更新配置”信号发送到您的网络服务器(通常是 HUP 或 USR1),以使其开始使用新证书而无需重新启动(...或只是重新启动)。
无需网络服务器即可使用
如果您只是想在没有运行网络服务器的情况下进行快速测试,这将为您解决:
sudo greenlock certonly --standalone \
--acme-version draft-11 --acme-url https://acme-v02.api.letsencrypt.org/directory \
--agree-tos --email jon@example.com --domains example.com \
--community-member \
--config-dir /etc/acme/
预计您没有在端口 80 上运行网络服务器,因为它会临时启动一个仅用于证书目的的网络服务器。
sudo 是使用端口 80 和写入根目录和 httpd 拥有的目录(如 /etc 和 /srv/www)所必需的。如果具有正确的权限,您可以以您的网络服务器的用户身份运行该命令。
使用 Greenlock 作为您的网络服务器
我们正在研究一种完全绕过中间人的选项,只需使用 greenlock 作为您的网络服务器,这对于简单的虚拟主机来说可能非常有用,就像您正在做的那样。如果您对此感兴趣,请告诉我,我会确保为您提供最新信息。
第四
Let's Encrypt 还有一个名为 certbot 的官方客户端,它可能也能正常工作,也许更好,但在早期,我自己构建比使用他们的更容易,因为他们早就存在问题固定。