Certbot的Apache插件验证器对“;http-01”;挑战?

Certbot的Apache插件验证器对“;http-01”;挑战?,apache,lets-encrypt,certbot,Apache,Lets Encrypt,Certbot,当通过Certbot软件使用Let's Encrypt时,您可以使用Apache插件在Apache web服务器上获取并安装证书 使用“http-01”质询,这可能是验证域所有权最常用的方法,身份验证程序必须以某种方式通过端口80上的http为目录/。众所周知的/acme质询中的文件提供服务 但从技术角度来看,Certbot是如何以自动化的方式实现这一点的呢 Certbot似乎既不会更改虚拟主机配置,也不会更改虚拟主机的文档根目录的实际内容 那么Certbot如何在技术上完成在所需位置提供文件的

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

使用“http-01”质询,这可能是验证域所有权最常用的方法,身份验证程序必须以某种方式通过端口80上的http为目录
/。众所周知的/acme质询
中的文件提供服务

但从技术角度来看,Certbot是如何以自动化的方式实现这一点的呢

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

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

插件的
perform()
调用另一个perform()。这将在配置的质询目录中创建质询文件,与文档根不同(
\u set\u up\u challenges()
包含检查目录是否存在并创建它的代码)。然后处理服务:

  • 查找或创建一个VirtualHost,该虚拟主机侦听已配置的端口并从文件(
    self.\u set\u up\u include\u directives(vh)
    )加载配置数据
  • 使用还原程序的
    register\u file\u creation()
  • 为正在使用的配置程序(例如,
    CONFIG\u TEMPLATE22\u PRE
    )-htaccess规则,其中,\u PRE是
    的重定向指向请求。众所周知的/acme challenge/[TOKEN]
    访问质询目录和_POST授予访问/.wellknown/acme challenge/和质询目录的权限。每一个都会写入以前注册的位置
  • 声明安装完成并返回

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

    正常(非apache插件):您给www根,certbot在相关路径上放置一个令牌(相对于www根),当它收到证书时,它删除令牌。对于apache,我认为这是类似的,可能没有推送文件(但只是重定向)。作为apache的插件,它拥有apache的所有信息,并且可以更改asnwers。-顺便说一句,挑战有很好的文档记录,您有插件的来源,可以查看详细信息。Wireshark可以帮助查看流量。@GiacomoCatenazzi谢谢,我知道web根插件,但就Apache插件而言,据我所知,挑战的确切行为没有记录在案。除此之外,如问题中所述,Apache插件不会更改“虚拟主机的文档根目录的实际内容”。这就是为什么我问它如何在不触及父目录的实际源代码的情况下为
    /.well/acme challenge
    目录提供服务。对Apache配置的一些临时更改也是我的猜测,但我想知道细节。挑战是一样的,但插件可以处理请求。插件将提供要发送的数据(与其他插件一样),它不需要在文件系统上写入。再次将“插件”插入apache。该插件是apache进程的一部分。请看,\u mod\u config可能包含您的问题的答案。