通过Certbot软件使用Let's Encrypt时,您可以使用Apache插件在Apache Web服务器上获取和安装证书。
使用“http-01”挑战(可能是验证域名所有权的最常用方法),验证者必须以某种方式通过端口80上的HTTP在/.well-known/acme-challenge
目录中提供文件。
但是,从技术角度来看,Certbot如何以自动化方式实际执行此操作?
似乎Certbot既不会更改虚拟主机配置,也不会更改虚拟主机的文档根目录的实际内容。
那么Certbot如何在技术上完成在所需位置提供文件的任务呢?
插件的configurator.py的perform()
在http_01.py file中调用另一个perform()。这将在配置的质询目录中创建质询文件,与文档根目录不同(_set_up_challenges()
包含检查目录是否存在的代码并创建它)。然后_mod_config()处理服务:
self._set_up_include_directives(vh)
)加载配置数据。register_file_creation()
到临时_pre和_post规则文件的register the creation(这不会写入它们,但如果有以后的错误则确保删除它们)。CONFIG_TEMPLATE
s对中选择并填充内部质询目录的已配置路径(例如,CONFIG_TEMPLATE22_PRE
) - htaccess规则,其中_PRE是将.wellknown/acme-challenge/[TOKEN]
请求指向challenge目录和_POST的重定向授予访问/.wellknown/acme-challenge/和挑战目录的权限。其中每个都写入先前注册的位置。所以,是的,临时配置更改将请求重定向到自定义目录路径。