Visual Studio使用NuGet安装包报NU3037签名证书过期问题咨询
NuGet安装包报签名证书过期、信任链错误的解决方法
报错核心原因
NU3037、NU3028系列错误由两个问题叠加导致:
- 本地系统的受信任代码签名证书链未更新,微软旧代码签名证书对应的时间戳CA证书不在信任列表内,即便包带有合法时间戳,也无法通过签名校验
- 本地网络无法访问证书吊销列表服务器,NuGet默认开启的在线吊销校验直接失败,拦截包安装流程
报错中提到的2021年过期的微软签名证书本身不需要删除——带合法时间戳的包,哪怕签名时使用的证书后续过期,只要时间戳有效就应当被信任,报错核心是信任链缺失和吊销检查失败,并非旧证书本身存在导致的问题。
方案1:更新系统受信任证书链(优先推荐,永久解决)
- 完全退出所有Visual Studio进程,可在任务管理器确认无
devenv.exe相关进程运行 - 打开Windows更新,检查并安装所有更新,尤其是可选更新里标记为「根证书更新」的补丁,系统会自动同步最新的DigiCert、微软代码签名相关根证书、CA证书,补全缺失的信任链
- 如果不想走系统更新,可按
Win+R输入certmgr.msc打开证书管理器,在「受信任的根证书颁发机构」目录手动导入最新的DigiCert SHA2系列代码签名根证书 - 操作完成后重启Visual Studio,绝大多数场景下可直接解决证书过期类报错
方案2:调整证书吊销检查模式(解决吊销服务器无法访问问题)
如果更新证书后仍报吊销检查相关警告/错误,是因为本地网络无法连通证书吊销列表服务器,可按以下步骤调整配置:
- Visual Studio图形化配置:打开VS依次进入「工具」-「选项」-「NuGet包管理器」-「常规」,找到「证书吊销检查」项,将默认的「在线检查」修改为「离线检查」
- 命令行场景配置:给系统添加全局环境变量
DOTNET_CERTIFICATE_REVOCATION_MODE=Offline,或在执行包安装命令时追加参数--revocation-mode Offline - 注意:关闭在线吊销检查会略微降低包校验安全性,仅建议在本地开发环境、确认使用的NuGet源为官方源或可信私有源时使用
方案3:清理本地NuGet缓存
部分场景是本地NuGet缓存存储了带旧签名元数据的包文件,导致每次安装都读取错误的签名信息:
- 命令行执行:如果使用NuGet原生工具,执行
nuget locals all -clear;如果使用dotnet工具链,执行dotnet nuget locals all --clear - 图形化操作:在Visual Studio的NuGet包管理器设置页,直接点击「清除所有NuGet缓存」按钮即可
- 清理完成后重启VS再尝试安装包即可
内容的提问来源于stack exchange,提问作者H. Zucki
相关产品推荐
相关产品推荐

