新闻详情

新闻详情

首页 / 资讯中心 / 详情

lego 使用 Vscale DNS 提供商签发通配符证书:VSCALE_API_TOKEN 配置与 DNS-01 实战指南

发布时间:2026/9/25 2:58:35来源:尧图网络
lego 使用 Vscale DNS 提供商签发通配符证书:VSCALE_API_TOKEN 配置与 DNS-01 实战指南
网络安全密码学【免费下载链接】legoLets Encrypt/ACME client and library written in Go项目地址https://gitcode.com/gh_mirrors/le/lego点击查看免费下载本篇技术指南以 lego 官方 DNS 提供商文档中的 Vscale 章节为核心完整讲解如何使用 lego 配合 Vscale Domains API 通过 DNS-01 挑战自动签发含通配符证书。读完本文你将掌握 Vscale 提供商的环境变量配置、_FILE后缀与 dotenv 用法、全部可选参数及默认值并能结合源码理解其底层实现原理。概述lego 中的 Vscale DNS 提供商Vscale 是 lego 内置的 DNS 提供商之一提供商代码为vscale自v2.0.0版本起可用。其配置说明文档位于 docs/content/dns/zz_gen_vscale.md该文件由 providers/dns/vscale/vscale.toml 自动生成字段与 TOML 元数据一一对应。它的适用场景非常明确当你的域名托管在 Vscale且希望以纯 DNS 方式DNS-01 挑战为域名或*.example.com这类通配符域名签发 Lets Encrypt 证书时无需在服务器上开放 80/443 端口只需在 Vscale 控制台生成 API Token 并注入环境变量即可。快速开始一条命令签发通配符证书官方文档给出的最小可用示例如下docs/content/dns/zz_gen_vscale.mdVSCALE_API_TOKENxxxxx \ lego run --dns vscale -d *.example.com -d example.com命令解析VSCALE_API_TOKEN必填的 API Token在 Vscale 控制台的「Settings → Tokens」页面生成源码注释见 providers/dns/vscale/vscale.go--dns vscale指定使用 Vscale 提供商走 DNS-01 挑战-d *.example.com -d example.com同时为通配符域名和根域名申请证书ACME 要求通配符域名必须与根域名一并提交。凭证配置VSCALE_API_TOKENVscale 提供商仅需一个凭证环境变量环境变量名描述VSCALE_API_TOKENAPI token必填从源码看凭证的加载逻辑位于 providers/dns/vscale/vscale.goNewDNSProvider()调用env.Get(EnvAPIToken)读取环境变量若为空则返回错误vscale: some credentials information are missing: VSCALE_API_TOKEN。相关测试用例providers/dns/vscale/vscale_test.go也验证了「缺失 API Token 时报错」这一行为。_FILE后缀凭证改为引用文件官方文档特别说明所有环境变量名都可以加上_FILE后缀改为引用一个文件路径而不是直接的值详细说明见 docs/content/dns/_index.md。例如VSCALE_API_TOKEN_FILE/etc/secrets/vscale-token \ lego run --dns vscale -d *.example.com -d example.com文件内容必须只包含凭证值本身不能带换行之外的字符。该机制由platform/env包统一实现env.Get内部调用GetOrFileplatform/env/env.go会先读取普通变量若为空则自动尝试对应的_FILE变量。dotenv 文件批量管理配置此外还可使用 dotenv 文件集中管理环境变量。使用lego run时通过--env-file指定lego run --dns vscale -d *.example.com -d example.com --env-file .env.vscale.env.vscale内容示例VSCALE_API_TOKENyour-token-here附加配置参数与默认值除凭证外Vscale 提供商还支持 4 个可选环境变量官方文档表格docs/content/dns/zz_gen_vscale.md环境变量名描述默认值VSCALE_HTTP_TIMEOUTAPI 请求超时秒30VSCALE_POLLING_INTERVALDNS 传播检查间隔秒2VSCALE_PROPAGATION_TIMEOUTDNS 传播最大等待时间秒120VSCALE_TTL用于 DNS 挑战的 TXT 记录 TTL秒60这些默认值可以在源码的NewDefaultConfig()中得到印证providers/dns/vscale/vscale.gofunc NewDefaultConfig() *Config { return Config{ TTL: env.GetOrDefaultInt(EnvTTL, selectel.MinTTL), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 120*time.Second), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPClient: http.Client{ Timeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), }, } }几个值得注意的细节VSCALE_TTL的默认值并非写死的 60而是引用了共享常量selectel.MinTTL 60providers/dns/internal/selectel/provider.go且该值同时是 TTL 的下限——低于 60 会被直接拒绝VSCALE_POLLING_INTERVAL默认值 2 秒来自dns01.DefaultPollingIntervalchallenge/dns01/dns_challenge.go这些变量同样支持_FILE后缀加载逻辑与凭证一致底层均为env.GetOrDefaultInt/env.GetOrDefaultSecondplatform/env/env.go。源码级实现Vscale 提供商的工作原理配置结构与 TTL 校验vscale包的类型Config是共享包selectel.Config的类型别名providers/dns/vscale/vscale.go包含Token、PropagationTimeout、PollingInterval、TTL、HTTPClient五个字段providers/dns/internal/selectel/provider.go。NewDNSProviderConfig(config)会执行两项硬校验providers/dns/internal/selectel/provider.goconfig.Token为空 → 报错credentials missingconfig.TTL 60→ 报错invalid TTL, TTL (59) must be greater than 60。测试用例TestNewDNSProviderConfig对「missing api key」和「bad TTL valuettl59」两种失败场景都有断言providers/dns/vscale/vscale_test.go。API 端点与认证方式Vscale 的默认 API 基址为https://api.vscale.io/v1/domainsproviders/dns/vscale/vscale.goHTTP 客户端在每次请求的请求头中注入X-Token: token完成认证providers/dns/internal/selectel/internal/client.go。核心调用链如下对应 Vscale Domains API 的Domains Records资源操作HTTP 请求源码位置按名称查域名GET /{domainName}client.go添加 TXT 记录POST /{domainID}/records/client.go列出记录GET /{domainID}/records/client.go删除记录DELETE /{domainID}/records/{recordID}client.goPresent / CleanUp 生命周期DNSProvider实现了challenge.ProviderTimeout接口providers/dns/vscale/vscale.go三个核心方法的语义如下Present通过dns01.GetChallengeInfo计算挑战 FQDN 与 TXT 值先GetDomainByName拿到域名对象 ID再以TypeTXT、TTLconfig.TTL、NameEffectiveFQDN、ContentValue调用AddRecord写入记录providers/dns/internal/selectel/provider.goCleanUp对EffectiveFQDN执行dns01.UnFqdn去掉尾部点得到记录名列出该域下所有记录逐一删除名称匹配的记录providers/dns/internal/selectel/provider.goTimeout直接返回配置中的PropagationTimeout与PollingInterval供 lego 在验证前等待 DNS 传播providers/dns/vscale/vscale.go。另外GetDomainByName具备递归降级能力当查询的域名层级大于 2 且返回 404 时会去掉最左侧子域重新查找直至找到账号下实际存在的父域client.go。从源码结构看这一设计是为了兼容子域名记录挂在父域下的场景。请求与错误处理内部客户端统一走do()方法注入X-Token头、发送请求、将非 2xx 响应解析为APIError含code、error、field字段后包装返回client.go、types.go。此外 HTTP 客户端还会被clientdebug.Wrap包装便于开启调试日志排查问题provider.go。验证与测试仓库为 Vscale 提供商提供了完整的单元测试与实时测试providers/dns/vscale/vscale_test.goTestNewDNSProvider覆盖「成功初始化」与「缺少VSCALE_API_TOKEN时报错」两条路径TestNewDNSProviderConfig覆盖 token 为空、TTL 低于 60 两种非法配置TestLivePresent/TestLiveCleanUp真实的挑战记录创建与清理测试仅在设置了 live 测试环境时运行默认跳过。如果你在配置过程中遇到「credentials information are missing」错误优先检查VSCALE_API_TOKEN是否设置或_FILE指向的文件内容是否为空若收到 TTL 相关报错请确认VSCALE_TTL不小于 60 秒。小结Vscale 是 lego 中接入成本较低的 DNS 提供商之一只需一个 API Token配合lego run --dns vscale即可完成通配符证书的签发与自动续期。其实现复用了 selectel 共享内核通过X-Token认证与「查域名 → 增删 TXT 记录」的标准流程工作全部参数TTL、传播超时、轮询间隔、HTTP 超时均可用环境变量覆盖且默认值明确。更多 provider 配置通用约定如_FILE后缀与 dotenv可参考 docs/content/dns/_index.md完整参数元数据则维护在 providers/dns/vscale/vscale.toml。赞分享网络安全密码学【免费下载链接】legoLets Encrypt/ACME client and library written in Go项目地址https://gitcode.com/gh_mirrors/le/lego点击查看免费下载相关推荐AI SDK Cartesia Provider 能力全景Sonic 语音合成与 Ink 2 实时转录的版本演进与源码级解析AI SDK Cartesia Provider 能力全景Sonic 语音合成与 Ink 2 实时转录的版本演进与源码级解析 ai sdk/cartesia网络安全密码学lego 使用 DDnssDynDNS ServiceDNS 提供商签发通配符证书DDNSS_KEY 配置与 DNS-01 挑战全指南lego 使用 DDnssDynDNS ServiceDNS 提供商签发通配符证书DDNSS_KEY 配置与 DNS 01 挑战全指南 导读 本文讲解如何网络安全密码学Dyn DNS 提供商接入指南用 lego 通过 DNS-01 挑战签发通配符证书Dyn DNS 提供商接入指南用 lego 通过 DNS 01 挑战签发通配符证书 本指南以 lego 项目自动生成的 Dyn 提供商文档 docs/con网络安全密码学上一篇如何快速实现BERT语义相似度计算面向初学者的完整指南 下一篇15分钟极速掌握.NET MAUI全平台自动化构建与测试从零基础到实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

IT资产管理与固定资产管理的本质区别及等保2.0下的落地实践 2026/9/25 3:40:19

IT资产管理与固定资产管理的本质区别及等保2.0下的落地实践

一个做了多年运维和资产管理的人,几乎都经历过同一种尴尬:行政那边把电脑、服务器当固定资产管,按折旧年限贴标签、一年盘一次点;IT这边却在天天为软件的授权够不够、这台设备到底谁在用、那台退役服务器的硬盘是不是没销毁而头疼…

阅读更多 →
红黑树原理详解与C++实现:从变色旋转到STL工程应用 2026/9/25 3:40:12

红黑树原理详解与C++实现:从变色旋转到STL工程应用

先说清楚一个事:红黑树这东西,不管你是刷题、面试、还是日常工作里排查线上问题,迟早是要撞上的。很多同学一听到"红黑树"三个字就头大,觉得它比AVL树复杂得多,一堆"变色"、"旋转"的规则…

阅读更多 →
SpringBoot+Vue3+MyBatis+MySQL:实验室管理系统开发与实践 2026/9/25 3:40:06

SpringBoot+Vue3+MyBatis+MySQL:实验室管理系统开发与实践

1. 需求先行的实验室系统:五个核心流程决定表结构走向先交代一下背景。我去年帮学校信息中心做了一套实验室管理系统,技术栈就是标题里的那套:Java SpringBoot Vue3 MyBatis MySQL。做之前我去实验室转了一圈,发现管设备的老师…

阅读更多 →
Odoo SaaS Kit多租户Docker化部署与运维实战 2026/9/25 3:40:06

Odoo SaaS Kit多租户Docker化部署与运维实战

简介:这是一份关于Odoo SaaS Kit的实操型技术文档,面向具备服务器管理与Odoo使用经验的企业IT运维人员,用于在指定服务器上基于Docker为每个客户创建独立、隔离的Odoo实例,实现多租户SaaS环境的部署、配置与日常管理。文档以PDF格…

阅读更多 →
电动汽车充放电紧急性指标调度方法实战指南 2026/9/25 3:39:41

电动汽车充放电紧急性指标调度方法实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
plannotator PR 描述批注实战:用共享 Prose 批注引擎让评审者一行划选就能评论 PR 正文 2026/9/25 3:39:41

plannotator PR 描述批注实战:用共享 Prose 批注引擎让评审者一行划选就能评论 PR 正文

【免费下载链接】plannotator Annotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click. 项目地址: https://gitcode.com/gh_mirrors/pl/plannotator 点击查看 免费下载 本篇基于 plannot…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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