【问题标题】:What does authenticator for Apache plugin from Certbot actually do for “http-01” challenge?Certbot 的 Apache 插件验证器实际上对“http-01”挑战做了什么?
【发布时间】: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


【解决方案1】:

插件的configurator.pyperform() 调用http_01.py file 中的另一个perform()。这会在配置的挑战目录中创建挑战文件,不同于文档根目录_set_up_challenges() 包含检查目录是否存在并创建它的代码)。 _mod_config() 然后处理服务:

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

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

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 2017-12-31
    • 2013-06-02
    • 2020-11-21
    • 2015-02-26
    • 2017-06-29
    • 2013-06-13
    • 2021-10-25
    相关资源
    最近更新 更多