新闻详情

新闻详情

首页 / 资讯中心 / 详情

lego 使用 UCloud DNS 完成 DNS-01 证书签发:ucloud 提供方完整配置指南

发布时间:2026/9/25 12:26:22来源:尧图网络
lego 使用 UCloud DNS 完成 DNS-01 证书签发:ucloud 提供方完整配置指南
网络安全密码学【免费下载链接】legoLets Encrypt/ACME client and library written in Go项目地址https://gitcode.com/gh_mirrors/le/lego点击查看免费下载本篇技术指南围绕 legoLets Encrypt/ACME client and library written in Go内置的UCloud 域名解析UDNRDNS 提供方展开介绍如何通过环境变量配置 UCloud 账号密钥利用其 DNS 服务为域名含泛域名签发或续期 ACME 证书。读完本文你将掌握lego run --dns ucloud的完整用法、全部可调参数及其默认值、_FILE文件引用方式以及该提供方在仓库源码中的实现原理与验证路径。UCloud 提供方概览UCloud 是 lego 官方内置的 DNS 提供方之一用于通过 UCloud 的 DNS 服务UDNR自动完成 DNS-01 挑战——即在验证域名下写入一条_acme-challengeTXT 记录待 CA 校验通过后再将其清理删除。项目值提供方代码Codeucloud引入版本Sincev4.34.0官方主页https://www.ucloud.cn/对应 APIUDNUCloud DNS相关接口见 UCloud 官方 API 文档提供方的元数据定义在 providers/dns/ucloud/ucloud.toml所有环境变量均以UCLOUD_为命名空间前缀。快速开始签发包含泛域名的证书使用 UCloud 提供方签发证书的最小命令如下摘自官方文档并保持原样UCLOUD_PUBLIC_KEYxxx \ UCLOUD_PRIVATE_KEYyyy \ lego run --dns ucloud -d *.example.com -d example.com其中UCLOUD_PUBLIC_KEY为 UCloud API 公钥Public keyUCLOUD_PRIVATE_KEY为 UCloud API 私钥Private key-d *.example.com -d example.com同时申请泛域名与裸域名ACME 要求两者同时出现在证书中时须显式列出。命令执行后lego 会调用--dns ucloud指定的提供方在 UCloud DNS 中为example.com创建挑战所需的 TXT 记录等待记录生效并完成验证最终签发并保存证书。若需了解lego run的全部命令行参数可查阅 docs/content/references/ref-flags。凭据配置Credentials提供方需要以下两个环境变量作为必填凭据环境变量名说明UCLOUD_PUBLIC_KEYUCloud API 公钥UCLOUD_PRIVATE_KEYUCloud API 私钥这两个变量在源码中对应 providers/dns/ucloud/ucloud.go 中的EnvPublicKey与EnvPrivateKey常量。构造提供方时NewDNSProvider二者缺一不可如果缺失会分别返回ucloud: some credentials information are missing: UCLOUD_PRIVATE_KEY之类的错误在直接使用配置对象NewDNSProviderConfig时若凭据为空则返回ucloud: credentials missing。这些行为均有测试用例覆盖见 providers/dns/ucloud/ucloud_test.go。使用_FILE后缀从文件读取凭据所有 UCloud 相关环境变量包括上面的公钥、私钥都可以在变量名后追加_FILE后缀使变量值指向一个文件路径lego 会读取该文件内容作为实际值。例如UCLOUD_PUBLIC_KEY_FILE/path/to/public_key \ UCLOUD_PRIVATE_KEY_FILE/path/to/private_key \ lego run --dns ucloud -d example.com文件内容只应包含值本身不包含换行或额外字符这一约定与 lego 所有 DNS 提供方一致详见 docs/content/dns/_index.md 中关于_FILE后缀的说明。附加配置Additional Configuration除了必填凭据UCloud 提供方还支持以下可选环境变量环境变量名说明默认值UCLOUD_HTTP_TIMEOUTAPI 请求超时时间秒30UCLOUD_POLLING_INTERVAL两次 DNS 传播检查之间的间隔秒2UCLOUD_PROJECT_IDUCloud 项目 ID无UCLOUD_PROPAGATION_TIMEOUTDNS 传播最长等待时间秒60UCLOUD_REGION地域Region无UCLOUD_TTL挑战 TXT 记录的 TTL秒600这些参数对应 providers/dns/ucloud/ucloud.go 中Config结构体的字段并由NewDefaultConfig见 providers/dns/ucloud/ucloud.go读取环境变量并填充默认值。各参数的作用与源码依据UCLOUD_TTL创建 TXT 记录时写入的 TTL 值字符串形式传入 UCloud API。默认 600 秒在Present中通过addRequest.TTL ucloud.String(strconv.Itoa(d.config.TTL))设置。UCLOUD_PROPAGATION_TIMEOUT/UCLOUD_POLLING_INTERVAL控制 lego 等待 DNS 记录全球生效的轮询策略。默认值取自 lego 全局常量dns01.DefaultPropagationTimeout60 秒与dns01.DefaultPollingInterval2 秒最终由Timeout()方法返回给挑战流程使用见 providers/dns/ucloud/ucloud.go。UCLOUD_HTTP_TIMEOUT每次调用 UCloud API 的超时上限默认 30 秒。Present/CleanUp中所有请求都通过WithTimeout(d.config.HTTPTimeout)生效。UCLOUD_REGION与UCLOUD_PROJECT_ID二者均为可选非空时会被写入 UCloud SDK 的客户端配置cfg.Region/cfg.ProjectId用于限定 API 调用的地域与项目范围。若你的账号资源位于非默认地域或多个项目下通常需要显式指定。同样地以上所有变量都支持_FILE后缀的文件方式引用。使用配置文件方式签发除命令行外lego 也支持通过.lego.yml配置文件声明挑战方式。将 DNS 提供方声明为ucloud即可例如challenges: cf: dns: provider: ucloud certificates: foo: domains: - example.com - *.example.com随后在执行lego无子命令时通过环境变量提供UCLOUD_PUBLIC_KEY/UCLOUD_PRIVATE_KEYUCLOUD_PUBLIC_KEYxxx \ UCLOUD_PRIVATE_KEYyyy \ lego配置文件相关字段说明可参考 docs/content/references/ref-file 中的challenges小节以及 DNS 挑战的整体指南 docs/content/obtain/dns01.md。源码实现与工作流程从源码结构看UCloud 提供方的实现分为两层对外暴露的提供方层与封装 API 调用的内部客户端层。提供方层providers/dns/ucloud/ucloud.goDNSProvider实现了challenge.Provider接口核心生命周期如下Presentproviders/dns/ucloud/ucloud.go由挑战信息计算出_acme-challenge.example.com形式的有效 FQDN通过FindZoneByFqdn定位权威 DNS 区域如example.com调用DomainDNSAdd创建一条TXT记录值为挑战 key authorizationTTL 取UCLOUD_TTL。CleanUpproviders/dns/ucloud/ucloud.go通过DomainDNSQuery拉取该域名全部 DNS 记录逐条匹配Type TXT、记录名等于挑战 FQDN、且内容等于挑战值的记录调用DeleteDNSRecord精确删除避免误删其他 TXT 记录。Timeout返回传播超时与轮询间隔交由 lego 的 DNS-01 传播检查机制使用。同时DNSProvider显式声明实现了challenge.ProviderTimeout接口见 providers/dns/ucloud/ucloud.go。内部客户端层providers/dns/ucloud/internal/client.go该层基于 UCloud 官方 Go SDKgithub.com/ucloud/ucloud-sdk-go封装以Product: UDNR初始化客户端并提供三个 API 动作providers/dns/ucloud/internal/client.go方法对应 UCloud API 动作用途DomainDNSAddUdnrDomainDNSAdd添加 DNS 记录DomainDNSQueryUdnrDomainDNSQuery查询域名 DNS 记录DeleteDNSRecordUdnrDeleteDnsRecord删除 DNS 记录请求与响应结构体定义在 providers/dns/ucloud/internal/types.go其中记录字段包括DnsType类型、RecordName记录名、Content内容、Prio优先级、TTL等。测试验证仓库为 UCloud 提供方提供了完整的单元测试与模拟服务器测试providers/dns/ucloud/ucloud_test.go覆盖缺省凭据错误、Present/CleanUp的完整 HTTP 交互使用httptest模拟 UCloud API校验表单参数中的Action、Dn、RecordName、DnsType、Content、TTL与签名头。providers/dns/ucloud/internal/client_test.go验证三个 API 动作的请求构造与响应解析测试固件位于 providers/dns/ucloud/internal/fixtures。测试中还会校验请求头U-Timestamp-Ms与 URL 编码表单体现了 UCloud API 基于时间戳与签名Signature参数的鉴权方式。此外还有TestLivePresent/TestLiveCleanUp两个仅在有真实凭据环境LEGO_LIVE下执行的在线用例可用于对真实 UCloud 账号做端到端验证。常见问题与注意事项凭据缺失UCLOUD_PUBLIC_KEY与UCLOUD_PRIVATE_KEY必须同时提供否则提供方初始化直接报错不会发起任何 API 调用。TTL 与传播若你的 DNS 服务商或权威解析缓存较慢可适当调大UCLOUD_TTL前先确认默认值 600 秒是否满足传播需求同时可增大UCLOUD_PROPAGATION_TIMEOUT以延长等待窗口。地域与项目在多项目/多地域场景下请结合账号实际资源所在位置设置UCLOUD_REGION与UCLOUD_PROJECT_ID避免 API 在错误的范围下找不到目标域名。Zone 解析Present/CleanUp依赖 lego 内置的权威区域解析FindZoneByFqdn。如果域名存在多个 SOA如内网与公网双 zone可通过--dns.resolvers指定外部权威解析服务器具体说明见 docs/content/obtain/dns01.md 与 docs/content/advanced/tips.md。延伸阅读DNS 提供方的通用配置与凭据规范含_FILE后缀约定docs/content/dns/_index.mdDNS-01 挑战完整指南docs/content/obtain/dns01.md提供方声明文件生成文档的元数据来源providers/dns/ucloud/ucloud.toml提供方核心实现providers/dns/ucloud/ucloud.goAPI 客户端实现providers/dns/ucloud/internal/client.go赞分享网络安全密码学【免费下载链接】legoLets Encrypt/ACME client and library written in Go项目地址https://gitcode.com/gh_mirrors/le/lego点击查看免费下载相关推荐使用 lego 通过 Constellix DNS 提供商签发 ACME 证书DNS-01 挑战完整配置指南使用 lego 通过 Constellix DNS 提供商签发 ACME 证书DNS 01 挑战完整配置指南 本文以 legoLets Encrypt/A网络安全密码学lego 使用 Hosting.de DNS Provider 签发证书DNS-01 挑战配置完整指南lego 使用 Hosting.de DNS Provider 签发证书DNS 01 挑战配置完整指南 Hosting.de 是 legoLets Enc网络安全密码学使用 lego 通过 Veesp DNS 提供商签发通配符证书DNS-01 挑战完整指南使用 lego 通过 Veesp DNS 提供商签发通配符证书DNS 01 挑战完整指南 导读 本文围绕 lego 的 Veesp DNS 提供商代码 v网络安全密码学上一篇AntiDupl终极解决方案专业级重复图片检测与磁盘空间释放完整手册下一篇安卓虚拟相机完全指南3步实现摄像头内容替换创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Atlas 300V部署YOLO全指南:昇腾推理加速卡的性能调优与避坑实践 2026/9/25 15:23:46

Atlas 300V部署YOLO全指南:昇腾推理加速卡的性能调优与避坑实践

先从最直接的问题说起:Atlas 300V 24G到底是不是一张运算加速卡?是,但它不是你想的那种加速卡。很多人一看到"24G显存"就下意识拿它跟RTX 4090、A100这些GPU比,这是个挺大的误区。Atlas 300V 24G是华为昇腾系的一款推理…

阅读更多 →
fast_align 性能优化指南:OpenMP + tcmalloc,百万句对实测快 4.8 倍 2026/9/25 15:23:39

fast_align 性能优化指南:OpenMP + tcmalloc,百万句对实测快 4.8 倍

fast_align 性能优化指南:OpenMP tcmalloc,百万句对实测快 4.8 倍 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator fast…

阅读更多 →
LLM+企微量化推送系统:打通策略信号到手机最后一公里 2026/9/25 15:23:39

LLM+企微量化推送系统:打通策略信号到手机最后一公里

1. 这套系统到底在解决什么问题散户做量化,最头疼的从来不是策略本身,而是“策略跑出来了,信号怎么及时送到手上”。我身边不少朋友用 Python 写完回测,收益曲线画得漂漂亮亮,结果实盘的时候还在手动刷新行情软件、手动…

阅读更多 →
Tekton Pipeline `nop` 镜像深度解析:优雅终止 Sidecar 与 Affinity Assistant 常驻容器的内部实现 2026/9/25 15:23:39

Tekton Pipeline `nop` 镜像深度解析:优雅终止 Sidecar 与 Affinity Assistant 常驻容器的内部实现

云原生CI/CDDevOps后端 【免费下载链接】pipeline A cloud-native Pipeline resource. 项目地址: https://gitcode.com/gh_mirrors/pipelin/pipeline 点击查看 免费下载 nop 是 Tekton Pipeline 内部使用的一个“最小化空操作”镜像,承担两项关键职能&a…

阅读更多 →
Atlas 300V 24G部署YOLOv5s:从ONNX到OM的完整实践与调优 2026/9/25 15:23:33

Atlas 300V 24G部署YOLOv5s:从ONNX到OM的完整实践与调优

最近帮客户做一套流水线视觉检测方案,手里的硬件正好是 Atlas 300V 24G 这张卡,任务是把 YOLOv5s 跑通,每天稳定处理几十万张图。装卡的时候同事顺嘴问了一句:“这不就是一块运算加速卡吗?跟显卡有啥区别?”…

阅读更多 →
强制重启后报No boot device available?启动链路排查与引导修复指南 2026/9/25 15:23:13

强制重启后报No boot device available?启动链路排查与引导修复指南

1. 一次强制重启引发的"血案"现场还原shutdown -r -f这条命令,但凡在机房待过几年的运维都敲过。它的作用很直接:跳过系统对未保存数据的友好询问,强制关闭所有进程并立即重启。正常情况下,敲完回车,屏幕一黑…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉