[Bug] zcode.z.ai 证书 SAN 仅含 IP 无 DNS 名:bigmodel OAuth 登录与 coding-plan 接口自 09-17 10:05 起全部失败
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 22
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
提交前确认 · Pre-submission checklist
- 我已搜索过现有 issue,确认这不是重复 / I searched existing issues and confirmed this isn't a duplicate.
- 我已阅读 CONTRIBUTING.md / I've read CONTRIBUTING.md.
问题类别 · Category
账号 / 登录 · Account / Login(疑似服务端 CDN 证书配置问题,非客户端缺陷)
涉及的 Agent 框架 · Agent framework
不涉及框架 · Not framework-specific(桌面端登录/订阅链路)
严重程度 · Severity
阻塞使用 · Blocking —— OAuth 登录与 coding-plan 订阅接口全部失败;已配置 API key 的模型会话不受影响
复现频率 · Reproducibility
必现 · Always(自 2026-09-17 10:05 起每次必失败)
问题描述 · Description
自 2026-09-17 10:05(UTC+8)起,ZCode 桌面端登录 bigmodel 账号(OAuth)以及 coding-plan 订阅相关接口全部失败。客户端日志统一报 fetch failed,底层错误为:
Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Cert does not contain a DNS name
排查确认:登录链路域名 zcode.z.ai(如 https://zcode.z.ai/api/v1/oauth/token)当前解析到 CDN 边缘节点,而这批节点在 443 端口返回的 TLS 证书 SAN(证书里"这张证书给哪些地址用"的清单)只包含两个 IP 地址,不含任何 DNS 域名,因此所有按域名 zcode.z.ai 校验证书的客户端都会在握手阶段失败。
对照:模型 API 通道 open.bigmodel.cn 证书正常(*.bigmodel.cn),所以 API key 模式的会话完全不受影响,故障仅限登录/订阅链路。像是今天上午服务端有一次证书/CDN 变更把域名证书换成了按 IP 签发的证书。
复现步骤 · Steps to reproduce
- 桌面端 bigmodel 家族使用 OAuth(coding-plan)模式
- 触发账号登录或任意订阅信息刷新
- 请求失败,日志中
oauth.startOAuthWithPolling、coding-plan-subscription.*等 RPC 全部fetch failed
任意 HTTPS 客户端直连即可复现(不依赖 ZCode):
curl -v https://zcode.z.ai/api/v1/oauth/token
# TLS 握手直接失败,HTTP 状态码 000
期望表现 · Expected behavior
OAuth 登录与订阅接口正常返回;zcode.z.ai 各节点出示包含 zcode.z.ai 域名的有效证书。
实际表现 · Actual behavior
TLS 握手阶段失败(证书不含 DNS 名称),登录与全部 coding-plan 订阅接口不可用,从 2026-09-17 10:05 持续至今(12 小时+)。
ZCode 版本 · ZCode version
桌面端 3.12.3(Windows)
设备 / 系统 · Device / OS
Windows 11(10.0.26200)· 中国大陆家宽网络
截图 / 录屏 / 日志 · Screenshots / Recordings / Logs
DNS 解析(两个公共 DNS 结果一致,非本机 DNS 污染):
$ nslookup zcode.z.ai 223.5.5.5
名称: zcode.z.ai.a1.initaa.com ← CNAME 指向 CDN 调度域
Addresses: 61.170.79.151 / 61.170.79.127 / 61.170.79.183 / 61.170.79.125
(119.29.29.29 腾讯 DNS 返回相同结果)
问题证书本体(SAN 只有 IP,没有域名):
$ echo | openssl s_client -connect zcode.z.ai:443 -servername zcode.z.ai | openssl x509 -noout -text
Subject: ← subject 为空
X509v3 Subject Alternative Name: critical
IP Address:117.55.193.154, IP Address:2406:CB42:0:2018:0:0:0:2
^^^ 只有两个 IP,无任何 DNS 名
对照正常通道 open.bigmodel.cn(模型 API 不受影响的原因):
$ echo | openssl s_client -connect open.bigmodel.cn:443 -servername open.bigmodel.cn | openssl x509 -noout -subject -ext subjectAltName
subject=CN=*.bigmodel.cn
X509v3 Subject Alternative Name:
DNS:*.bigmodel.cn, DNS:bigmodel.cn
本地已排除的因素:
- hosts 文件无 bigmodel / z.ai 相关条目
- 系统代理关闭(
ProxyEnable=0) - 备用域
zcode.chatglm.site同期连接超时
客户端日志统计(~/.zcode/v2/logs/):
| 日期 | ERR_TLS_CERT_ALTNAME_INVALID 出现次数 |
|---|---|
| 09-11 ~ 09-16 | 0 |
| 09-17 | 84(首次 10:05:53) |
受影响接口:oauth.startOAuthWithPolling、coding-plan-subscription.getBillingDiscount / getManualClaimPlanPreviews / getStaticTeamProducts / getEnterprisePricing、client-scenes.list。
修复建议:给 zcode.z.ai 的 CDN 边缘节点(initaa.com 调度的 61.170.79.x 及对应 IPv6)重新部署包含 *.z.ai 或 zcode.z.ai DNS SAN 的域名证书;或回滚今天上午的证书变更。
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with curl against https://zcode.z.ai/api/v1/oauth/token and inspect the certificate with openssl s_client using SNI zcode.z.ai. Compare the certificate SAN with the reported open.bigmodel.cn certificate and the listed CDN addresses. Done means OAuth and coding-plan requests complete successfully with a certificate containing zcode.z.ai or an appropriate *.z.ai DNS SAN.
Written by the indexing model from the issue text.
Assessment
- Domain
- authentication, cloud, networking, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100