Chrome 10 月 27 日剔除 eMudhra 根:3 万张证书的排查命令与迁移清单

结论:Chrome 将在 10 月 27 日上午(太平洋时间)停止信任 emSign ECC Root CA - G3,Mozilla 已在 10 月 20 日决定在 Firefox 里做同样的事。影响范围是这条根下约 30,800 张未过期证书,其中 99.9% 由 InCommon 签发;eMudhra 自己估算需要迁移的约 3 万张,97% 通过 ACME 自动签发。挂在 emSign Root CA - G1(RSA)下面的证书目前仍在信任列表里。

今天要做的

先确认证书挂在哪条根上。对每个对外域名跑一次:

bash 复制代码
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null \
  | grep -E '^ *[is]:'

输出里出现 emSign ECC Root CA - G3 的,27 号之后会失效。出现 emSign Root TLS CA - G1 的暂时还能用,但别当长期方案,原因见下一节。链上只有 Let's Encrypt、DigiCert 或 InCommon 自己的 CA 名字、不出现 emSign 的,不用动。

再看这张证书的时间:

bash 复制代码
openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -issuer -subject -dates

换证走 ACME 的话,先空跑一次,别直接打到速率限制上:

bash 复制代码
certbot renew --cert-name example.com --dry-run
certbot renew --cert-name example.com --force-renewal

最后一件事最容易漏:不经浏览器的信任库。浏览器更新不会替你改这些。

bash 复制代码
# 系统 CA bundle
grep -ril "emSign" /etc/ssl/certs /usr/local/share/ca-certificates 2>/dev/null
# Java truststore
keytool -list -cacerts -storepass changeit 2>/dev/null | grep -i emsign
# 镜像里自带的 bundle
docker run --rm your-image sh -c 'grep -ril emSign /etc/ssl/certs 2>/dev/null'

参数与坑

项 值
受影响根 emSign ECC Root CA - G3
Chrome 生效 10 月 27 日上午(PT)
Firefox 10 月 20 日决定停止信任
根下未过期证书 30,800(Chrome 统计 CT 日志,截至 10 月 21 日)
其中经 InCommon 99.9%
需迁移 约 30,000,97% 走 ACME
备用根 emSign Root CA - G1(RSA),当前仍被信任

限制条件有四条:

  • 标准 ACME 客户端只在续期窗口内动作。窗口没到,它不会因为你着急就续,除非客户端支持 ACME Renewal Information(ARI),或者你手动 --force-renewal。这正是那 3 万张证书里最危险的一批。
  • 从 ECC 换到 RSA 不只是换一张证书。客户端配置里的密钥类型要改,部分老 SDK 对曲线和链顺序更挑。
  • G1 这条根也不干净。10 月 14 日发布的 CRL 签名对不上该 CA 自己的密钥,公开 bug 里的分析认为是用 OCSP 证书的密钥签的,Chrome 已就此提问。拿它做过渡可以,做终点不行。
  • 问题不在 P-384。CERT-In 的结论是 2025 年 4 月 30 日那次密钥生成里,脚本在 wrap/unwrap 环节多造了一套弱密钥,八个私钥的值都小于 256,从公钥几乎可以直接还原;六个拿去签 TLS,两个签代码。eMudhra 声明没有从这八个中间 CA 签发过终端证书,CERT-In 说截至 10 月 21 日没有确认的恶意利用。这两条只降低"已被利用"的概率,不改变"必须换"的结论。

Decisions API 的参数边界

10 月 22 日转正,端点是 POST /v1/decisions,只支持 gpt-6-luna。

项 值
输入 $0.10 / 百万 token
缓存输入 $0.01 / 百万 token
输出 不计费
单次问题数 1--400
题型 predicate / choice / score
返回 0--1 概率、选项加置信度、rubric 加权分
不支持 文件、音频、item 引用、file_id
有依赖的判断 拆成多次请求
缓存命中 共享输入前缀 ≥1,024 token

score 型返回的是概率加权平均,落在两档之间是正常结果,别按整数断言。档位数限定在 2 到 10。图片可以走 base64 data URL 或公网 HTTP(S) URL,PDF 这类文件不行。

论文方法:把 fuzz 入口变成定理

Anthropic 10 月 22 日那篇的做法能拆成四步,适合拉去做内部试点。

一,选入口。他们选的是 OSS-Fuzz 的 fuzz target,123 个库共 239 个入口。入口是作者自己留的测试前门,语义清楚,比整库验证便宜一个数量级。

二,把命题写窄。命题是"对任意小于 64MB 的输入,程序正常退出、不触发 ASan 报告的内存错误、断言不失败"。条件越具体,证明越短,模型越不容易跑偏。

三,落到汇编层。代码编译成静态链接 musl 的 RISC-V 二进制,再为这个 ISA 生成形式语义,证明做在汇编层。语义也是模型生成的,验收方式是能在语义上单步启动一个 Ubuntu 用户态。

四,用 Rocq 检查。证明由模型产出,对错由检查器兜底,模型自己说什么不算数。他们对"把程序改成永不崩溃来骗过证明"做了惩罚,并要求额外证明输入范围,压住这类奖励劫持。

产物是公开的一部分证明,加上 RISC-V 与 OS 的形式语义;Theorem 提供把同一套流程跑在别的开源项目上的服务,另外放了一个 Claude skill 给开发者起步。

边界要写清楚:只覆盖单线程、静态链接 musl 的 RISC-V 二进制,实际部署多是 x86/ARM 加 glibc;ASan 本身检不出全部内存错误,入口也没验全;整个库不等于所有入口之和。所以"这个库不会崩"这句话,限定条件比结论长。

相关推荐
锋行天下17 分钟前
LangGraph HITL 实战:从 interrupt 到 useStream 的最小闭环
人工智能
kyriewen17 分钟前
AI 能把页面写出来,为什么改个需求就开始崩?
前端·javascript·人工智能
张彦峰ZYF1 小时前
浏览器调试接口的官方化:从 chrome-devtools-mcp 看 Agent 原生工具层的形成
人工智能·chrome·agent·mcp·apache-2.0许可·devtools-mcp·调试闭环
Dawson Zhu1 小时前
Queen Planner深度解析:Agent竞争从模型时代进入系统时代
人工智能·语言模型·架构·aigc·agi
甲维斯2 小时前
GPT6.2Astra也很强啊,国模...!
人工智能
承渊政道2 小时前
Fooocus本地AI绘图教程:Windows部署、低门槛生图与远程访问
人工智能·windows·cpolar·fooocus·生图
熊猫钓鱼>_>2 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
AI算力3 小时前
私有云时代来临:AI NAS如何重塑你的数字生活?
人工智能·科技·ai·生活·nas·ai算力·ainas
程序员cxuan3 小时前
讲真,智能路由这事儿,还得看基元律动
人工智能·后端·程序员
zixu_star3 小时前
定时任务是什么?从日常自动化到 AI 应用,软件如何自动执行任务?
运维·人工智能·自动化