公开预览 · 注册及正式收款尚未开放。
Anti-AIClonePILOT

日志日期 · 周三

微软 NuGet 作者签名证书自 2026-09-23 起更换

2026-09-23 .NET 博客宣布微软更换 NuGet 包作者签名证书;启用强制签名白名单的团队需要添加新指纹,否则会遇到 NU3034。

当天发生了什么

2026-09-23,NuGet 团队在 .NET 博客发布文章,宣布微软更换用于 NuGet 包作者签名的 X.509 证书:从 2026-09-23 起,新证书成为默认签名证书,已用旧证书签名的包保留原签名,过渡后旧证书不再用于签署新包。文章给出了当前证书与新证书的 SHA-256 指纹。按文章说法,只有两类用户受影响:一是在 NuGet 客户端策略中把 signatureValidationMode 设为 require,并在受信签名者白名单中包含 Microsoft 的用户;二是使用 dotnet nuget verify 校验微软作者签名的用户。前者需要在 nuget.config 的 Microsoft 条目中加入新指纹并保留旧指纹,否则安装新证书签名的包会以 NU3034 错误失败;后者需要额外传入新指纹。文章给出了 dotnet nuget trust author 命令示例,并注明需要 .NET 6 SDK 或更高版本。

对应用完整性意味着什么

保护 .NET 应用,不只是保护自己写的代码,也包括确认打进发布包的依赖确实来自预期的发布者。强制签名校验加白名单,是少数能在恢复依赖时就拦截异常包的机制之一。证书轮换期间最常见的风险不是攻击,而是「构建坏了,先把校验关掉」。一旦关闭,往往就不会再打开。同时也要看清边界:作者签名证明的是包由谁签署、签署后没有被改动,并不证明代码本身安全;它也与应用自身的 Authenticode 签名、混淆或 Native AOT 无关。对于从论坛或第三方转载复制来的指纹,应回到官方文章核对,因为信任列表本身就是攻击目标。

可以落实的检查

第一,在所有仓库与 CI 镜像中搜索 nuget.config,确认是否设置了 signatureValidationMode 为 require 以及 Microsoft 受信签名者条目。第二,如已启用,按官方文章加入新指纹,并保留旧指纹;指纹值以官方文章为准。第三,更新 CI 中调用 dotnet nuget verify 的脚本,加入新指纹。第四,在干净的构建环境中完整执行一次依赖恢复,确认没有 NU3034 错误,并把这次变更记录到构建配置的变更日志中,便于以后审计。

行动清单

  • 搜索 nuget.config 中的 require 模式与 Microsoft 受信签名者
  • 按官方文章加入新指纹并保留旧指纹
  • 在干净环境中恢复依赖,确认无 NU3034

原始资料

全部原始资料与转载状态 ↗