【发布时间】:2019-07-30 00:25:21
【问题描述】:
通过 Certbot 软件使用 Let's Encrypt 时,您可以使用 Apache 插件在您的 Apache Web 服务器上获取和安装证书。
对于“http-01”挑战,这可能是验证您对域的所有权的最流行的方法,身份验证器必须以某种方式通过端口 80 上的 HTTP 提供目录 /.well-known/acme-challenge 中的文件。
但是,从技术角度来看,Certbot 实际上是如何以自动化方式做到这一点的呢?
似乎 Certbot 既没有更改您的虚拟主机配置,也没有更改虚拟主机文档根目录的实际内容。
那么 Certbot 如何在技术上完成在所需位置提供文件的任务?
【问题讨论】:
-
正常(非apache插件):你给www-root,certbot在相关路径(相对于www-root)上放一个令牌,当它收到证书时,它会删除令牌。对于 apache,我认为它是相似的,可能不需要推送文件(但只是重定向)。作为 apache 的一个插件,它拥有 apache 的所有信息,并且可以更改 asnwers。 -- BTW 挑战有据可查,而且您有插件的来源,可以查看详细信息。 Wireshark 可以帮助查看流量。
-
@GiacomoCatenazzi 谢谢,我知道 web 根插件,但是当谈到 Apache 插件时,挑战的确切行为没有记录在案,据我所知可以看到。除此之外,如问题中所述,Apache 插件确实不更改“虚拟主机的文档根目录的实际内容”。所以这就是为什么我问它如何在不触及其父目录的实际源的情况下为
/.well-known/acme-challenge目录提供服务。 Apache 配置的一些临时更改也是我的猜测,但我很想知道细节。 -
挑战是一样的,但是插件处理请求。插件会给数据发送(和其他插件一样),它不需要写在文件系统上。再次将“插件”“插入”到 apache 中。该插件是apache进程的一部分
-
看看github.com/certbot/certbot/blob/master/certbot-apache/…,_mod_config 可能包含您问题的答案。
标签: apache lets-encrypt certbot