来自 Certbot 的 Apache 插件的身份验证器实际上对“http-01”挑战做了什么?

What does authenticator for Apache plugin from Certbot actually do for “http-01” challenge?

通过 Certbot 软件使用 Let's Encrypt 时,您可以使用 Apache 插件在 Apache Web 服务器上获取和安装证书。

对于“http-01”挑战,这可能是验证您对域的所有权的最流行方式,身份验证器必须以某种方式通过端口 80 上的 HTTP 提供目录 /.well-known/acme-challenge 中的文件。

但从技术角度来看,Certbot 实际上是如何以自动化方式执行此操作的?

Certbot 似乎既没有更改您的虚拟主机配置,也没有更改虚拟主机文档根目录的实际内容。

那么 Certbot 如何在技术上完成在所需位置提供文件的任务?

插件的 configurator.py's perform() calls another perform() in http_01.py file. This creates the challenge files in the configured challenge directory, distinct from the document root (_set_up_challenges() includes code to check whether the directory exists and create it). _mod_config() 然后处理服务:

  1. 查找或创建一个 VirtualHost,它侦听配置的端口并从文件 (self._set_up_include_directives(vh)) 加载配置数据。
  2. 使用还原器的 register_file_creation()register the creation 的临时 _pre 和 _post 规则文件(这不会写入它们,但确保在以后出现错误时删除它们)。
  3. 为正在使用的配置器选择并填写适当的 CONFIG_TEMPLATE 对中的内部质询目录的配置路径(例如,CONFIG_TEMPLATE22_PRE)- htaccess 规则,其中 _PRE 是将 .wellknown/acme-challenge/[TOKEN] 的指向请求重定向到挑战目录,_POST 授予对 /.wellknown/acme-challenge/ 和挑战目录的访问权限。这些中的每一个都被写入先前注册的位置。
  4. 声明设置完成并 returns。

是的,临时配置更改将请求重定向到自定义目录路径。