.NET 5项目安装Swashbuckle.AspNetCore 5.X/6.X出现NU3012警告求助
触发的NU3012警告如下:
NU3012: 包 'Microsoft.OpenApi 1.2.3'(源:'https://api.nuget.org/v3/index.json'):作者主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
NU3012: 包 'Swashbuckle.AspNetCore.Swagger 6.2.1'(源:'https://api.nuget.org/v3/index.json'):存储库主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
NU3012: 包 'Swashbuckle.AspNetCore.SwaggerGen 6.2.1'(源:'https://api.nuget.org/v3/index.json'):存储库主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
NU3012: 包 'Swashbuckle.AspNetCore 6.2.1'(源:'https://api.nuget.org/v3/index.json'):存储库主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
NU3012: 包 'Microsoft.Extensions.ApiDescription.Server 3.0.0'(源:'https://api.nuget.org/v3/index.json'):作者主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
NU3012: 包 'Swashbuckle.AspNetCore.SwaggerUI 6.2.1'(源:'https://api.nuget.org/v3/index.json'):存储库主签名构建链时出错:NotValidForUsage:证书不符合请求的使用用途。
问题根因:本地系统的根证书链缺失或过旧,无法验证NuGet官方源发布的包签名,与Swashbuckle包本身无关,属于本地环境配置问题
可按以下步骤依次排查解决:
步骤1:更新Windows根证书
打开Windows「管理计算机证书」控制台,展开「受信任的根证书颁发机构」→「证书」,确认DigiCert Global Root CA等根证书存在且在有效期内。如果缺失根证书,按下Win+R运行certutil -generateSSTFromWU roots.sst,从微软更新服务器拉取最新的根证书列表。步骤2:更新Visual Studio 2019到最新补丁版
你当前使用的16.11.3版本内置的NuGet客户端版本较低,存在签名校验的已知问题,打开Visual Studio Installer将Visual Studio 2019更新到最新的16.11.x正式版本,更新完成后重启软件重试。步骤3:清理本地NuGet缓存
打开包管理器控制台,执行命令dotnet nuget locals all --clear,清理所有本地缓存的NuGet包,避免缓存的损坏包干扰安装。步骤4(临时测试用,不建议长期开启):禁用NuGet包签名验证
打开路径C:\Users\{你的系统用户名}\AppData\Roaming\NuGet\NuGet.Config,在<configuration>节点下添加如下配置:
<config> <add key="signatureValidationMode" value="accept" /> </config>
保存配置后重启Visual Studio即可正常安装包,安装完成后建议删除该配置恢复签名校验,避免安装恶意未签名包。
项目创建参考截图:

内容的提问来源于stack exchange,提问作者Paul Bert Tangid

