
网络安全CLI后端【免费下载链接】certbotCertbot is EFFs tool to obtain certs from Lets Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol.项目地址https://gitcode.com/gh_mirrors/ce/certbot点击查看免费下载Certbot 的certbot-dns-dnsmadeeasy插件让用户能够通过 DNS Made Easy 的 API 自动完成 ACMEdns-01挑战——插件自动创建并清理用于验证的 TXT 记录从而无需在服务器上开放 80 端口即可为任意域名包括通配符域名签发 Lets Encrypt 证书。读完本文你将掌握该插件的安装方式、两个核心命令行参数、凭据文件的正确配置与安全防护以及从源码层面理解 TXT 记录创建/删除的完整执行链路。插件定位与工作原理certbot-dns-dnsmadeeasy是 Certbot 官方维护的 DNS 认证插件之一。其核心职责在模块文档字符串中有明确定义见 certbot-dns-dnsmadeeasy/src/certbot_dns_dnsmadeeasy/init.py该插件通过调用 DNS Made Easy API创建并在验证完成后删除 TXT 记录来自动化完成dns-01挑战~acme.challenges.DNS01。整个流程不需要 Web 服务器参与因此特别适合通配符域名*.example.com证书签发服务器不开放 80/443 端口、或证书目标不在本机的场景希望完全自动化、无需人工干预的证书续期场景。从源码结构看插件的Authenticator类继承自LexiconDNSAuthenticatorcertbot/src/certbot/plugins/dns_common_lexicon.py即底层通过开源库dns-lexicon与 DNS Made Easy 的 API 通信而不是直接手写 HTTP 请求。安装方式文档明确说明该插件默认不随 Certbot 安装。用户需要前往 certbot.eff.org 的安装指引页面选择自己的操作系统并切换到Wildcard通配符标签页按页面提示安装对应插件包。以 pip 方式安装时包名为certbot-dns-dnsmadeeasy。从 certbot-dns-dnsmadeeasy/pyproject.toml 可以看到其声明方式插件入口[project.entry-points.certbot.plugins]中将dns-dnsmadeeasy指向certbot_dns_dnsmadeeasy._internal.dns_dnsmadeeasy:Authenticatorpyproject.tomlCertbot 据此识别并加载该插件Python 版本要求requires-python 3.10运行时依赖setup.pydns-lexicon3.14.1以及与本插件同版本的acme与certbot非 Snap 构建时。其中dns-lexicon3.14的版本要求与源码中使用 Client 作为上下文管理器的写法直接对应见下文源码解析。命令行参数详解该插件只暴露两个命令行参数均以--dns-dnsmadeeasy-为前缀。文档中的参数表如下参数说明是否必填/默认值--dns-dnsmadeeasy-credentialsDNS Made Easy 凭据 INI 文件路径必填--dns-dnsmadeeasy-propagation-seconds等待 DNS 传播的秒数之后再请 ACME 服务器验证 DNS 记录默认60从实现角度看Authenticator.add_parser_argumentsdns_dnsmadeeasy.py在基类基础上注册了credentials参数并把default_propagation_seconds设为60覆盖了基类DNSAuthenticator默认的 10 秒certbot/src/certbot/plugins/dns_common.py。关于传播等待时间基类的perform方法dns_common.py在创建完所有 TXT 记录后会先打印Waiting %d seconds for DNS changes to propagate提示然后sleep指定的秒数。因为本地 DNS 缓存与 ACME 服务器看到的 DNS 状态并不同步这一固定等待是以时间换可靠的稳妥做法。如果验证失败Certbot 会给出auth_hint提示建议检查域名是否托管在该 DNS 服务商或调大--dns-dnsmadeeasy-propagation-seconds。凭据文件配置使用该插件前需要先从 DNS Made Easy 账户页面获取 API 凭据API Key 与 Secret Key。文档给出的示例凭据文件如下INI 格式# DNS Made Easy API credentials used by Certbot dns_dnsmadeeasy_api_key 1c1a3c91-4770-4ce7-96f4-54c0eb0e457a dns_dnsmadeeasy_secret_key c9b5625f-9834-4ff8-baba-4ed5f32cae55凭据文件路径有两种提供方式交互式输入运行certbot certonly --dns-dnsmadeeasy时若未通过命令行指定Certbot 会提示输入路径命令行指定通过--dns-dnsmadeeasy-credentials参数传入。需要注意Certbot 会记录该文件的路径用于续期但不会保存文件内容本身。续期时 Certbot 会重新读取该路径下的凭据文件因此请保证此文件长期存在且内容有效。凭据文件的校验逻辑由基类_configure_credentialsdns_common.py完成它要求文件中必须存在插件声明为必填的变量否则抛出PluginError。本插件通过_add_provider_option声明了两个必填项dns_dnsmadeeasy.pyapi-key→ 映射为 Lexicon 提供商的auth_usernamesecret-key→ 映射为 Lexicon 提供商的auth_token。凭据安全与权限警告文档对凭据安全给出了明确的警告应当像保护 DNS Made Easy 账户密码一样保护这些 API 凭据。能读取该文件的用户可以利用这些凭据以你的名义发起任意 API 调用能诱使 Certbot 使用这些凭据运行的用户可以完成dns-01挑战为相关域名获取新证书或吊销已有证书即使这些域名并非由当前服务器管理。此外Certbot 会在检测到凭据文件可被系统内其他用户访问时发出警告警告信息为Unsafe permissions on credentials configuration file后接凭据文件路径。该警告在每次使用凭据文件时都会出现包括续期场景且无法通过任何开关静默——只能通过修复权限问题来消除例如chmod 600 ~/.secrets/certbot/dnsmadeeasy.ini建议将凭据文件放在仅当前用户可读的目录如~/.secrets/certbot/下并设置600权限。实战示例以下示例均来自文档可直接复制使用需根据实际情况替换域名与凭据路径。示例 1为example.com签发证书certbot certonly \ --dns-dnsmadeeasy \ --dns-dnsmadeeasy-credentials ~/.secrets/certbot/dnsmadeeasy.ini \ -d example.com示例 2为example.com与www.example.com签发单个证书多域名 SAN 证书certbot certonly \ --dns-dnsmadeeasy \ --dns-dnsmadeeasy-credentials ~/.secrets/certbot/dnsmadeeasy.ini \ -d example.com \ -d www.example.com示例 3为example.com签发证书等待 2 分钟120 秒用于 DNS 传播certbot certonly \ --dns-dnsmadeeasy \ --dns-dnsmadeeasy-credentials ~/.secrets/certbot/dnsmadeeasy.ini \ --dns-dnsmadeeasy-propagation-seconds 120 \ -d example.com提示把--dns-dnsmadeeasy-propagation-seconds从默认的 60 秒调大如 120适用于 DNS 记录传播较慢、或曾遇到验证超时的场景调小则会加快签发流程但可能增加验证失败概率。源码实现原理插件类的构成Authenticator类定义在 certbot-dns-dnsmadeeasy/src/certbot_dns_dnsmadeeasy/_internal/dns_dnsmadeeasy.py关键点如下description向用户展示的功能说明——使用 DNS TXT 记录获取证书当你使用 DNS Made Easy 作为 DNS 服务商时_provider_name返回dnsmadeeasy即 Lexicon 中对应的提供商名称more_info()说明插件通过 DNS Made Easy API 配置 TXT 记录以响应dns-01挑战。TXT 记录的创建与清理插件继承自LexiconDNSAuthenticator其核心逻辑位于 dns_common_lexicon.py_perform(domain, validation_name, validation)先解析出实际托管 zone 的域名再以with Client(config) as operations上下文管理器方式创建TXT记录记录名为_acme-challenge.开头的验证域名记录内容为挑战验证值_cleanup(domain, validation_name, validation)删除之前创建的 TXT 记录。若解析 zone 失败则静默返回fails gracefully避免在证书已签发、清理失败时中断流程_build_lexicon_config(domain)组装 Lexicon 配置包括domain、delegated设为与 domain 相同的值以绕过 Lexicon 的子域解析逻辑直接使用传入的 zone 名、provider_name以及从凭据文件读取的提供商选项_ttl属性返回60即创建的 TXT 记录 TTL 固定为 60 秒dns_common_lexicon.py。Zone 识别与错误处理_resolve_domaindns_common_lexicon.py会通过base_domain_name_guesses逐级猜测域名如先试www.example.com再试example.com尝试用每个候选域名连接提供商直到成功为止。本插件重写了_handle_http_errordns_dnsmadeeasy.py以提供更友好的错误信息404 Not Found说明该候选 zone 不存在返回None让上层继续尝试下一个候选域名403 Forbidden通常意味着凭据有误错误信息会附带提示Are your API key and Secret key values correct?其余 HTTP 错误包装为PluginErrorError determining zone identifier: ...。与基类的协作流程整个签发流程可概括为对应 dns_common.py 的perform/cleanupperform先调用_setup_credentials读取并校验凭据文件对每个待验证域名计算验证记录名与验证值调用_perform创建 TXT 记录统一等待propagation-seconds秒让 DNS 记录传播ACME 服务器完成验证、证书签发后调用cleanup删除 TXT 记录。测试验证仓库提供了针对本插件的单元测试certbot-dns-dnsmadeeasy/src/certbot_dns_dnsmadeeasy/_internal/tests/dns_dnsmadeeasy_test.py。测试类继承BaseLexiconDNSAuthenticatorTest验证要点包括在临时目录中写入含dnsmadeeasy_api_key、dnsmadeeasy_secret_key的凭据文件并构造dnsmadeeasy_credentials、dnsmadeeasy_propagation_seconds0测试期间不等待传播的配置定义DOMAIN_NOT_FOUND404 响应与LOGIN_ERROR403 响应两类 HTTP 错误场景分别对应源码中404 继续猜测 zone、403 提示检查 Key的分支逻辑通过模拟的 Lexicon 客户端验证 TXT 记录的创建、删除与错误处理路径。这说明插件的凭据解析、zone 识别和错误提示行为均有对应的自动化测试保障。续期与使用注意续期时 Certbot 会自动复用当初记录的凭据文件路径无需再次交互输入请确保凭据文件路径稳定、内容长期有效通配符证书-d *.example.com只能通过dns-01挑战签发这正是本插件的典型使用场景若使用过程中遇到 Unsafe permissions on credentials configuration file 警告应通过chmod 600收紧文件权限而不是忽略它。更多插件 API 层面的说明可参考 certbot-dns-dnsmadeeasy/docs/api.rst——Certbot 插件实现的是 Certbot 插件 API除此之外不对外暴露独立 API文档的完整索引位于 certbot-dns-dnsmadeeasy/docs/index.rst。赞分享网络安全CLI后端【免费下载链接】certbotCertbot is EFFs tool to obtain certs from Lets Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol.项目地址https://gitcode.com/gh_mirrors/ce/certbot点击查看免费下载相关推荐Certbot DNSimple DNS 插件certbot-dns-dnsimple实战指南基于 DNS-01 挑战的自动化通配符证书签发Certbot DNSimple DNS 插件certbot dns dnsimple实战指南基于 DNS 01 挑战的自动化通配符证书签发 Certbo网络安全CLI后端Sandstorm 的 acme-dns-01-sandcats 插件借助 ACME dns-01 挑战自动签发 Sandcats.io 子域证书Sandstorm 的 acme dns 01 sandcats 插件借助 ACME dns 01 挑战自动签发 Sandcats.io 子域证书 导读 ac后端容器运行时安全云原生Certbot 通配符证书签发实战certbot-dns-google 插件与 Google Cloud DNS 的 dns-01 自动化配置指南Certbot 通配符证书签发实战certbot dns google 插件与 Google Cloud DNS 的 dns 01 自动化配置指南 本指南聚焦网络安全CLI后端上一篇libevhtp社区贡献指南如何参与开源项目开发下一篇Maestro 跨平台 UI 自动化测试实战一个 YAML 流程跑通 Android、iOS 与 Web创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考