当我试图在构建dotnet restore时将RUN作为Dockerfile的一个RUN指令运行时,我会得到以下错误:
/src/Anonymized.Tests/Anonymized.Tests.csproj : error NU3028: Package 'Microsoft.Win32.SystemEvents 5.0.0' from source 'https://api.nuget.org/v3/index.json': The author primary signature's timestamp found a chain building issue: UntrustedRoot: self signed certificate in certificate chain [/src/Anonymized.sln]
/src/Anonymized.Tests/Anonymized.Tests.csproj : error NU3037: Package 'Microsoft.Win32.SystemEvents 5.0.0' from source 'https://api.nuget.org/v3/index.json': The author primary signature validity period has expired. [/src/Anonymized.sln]这种情况发生在我所有的NuGet包中。
如果我在容器外运行它,它就能正常工作。
我正在使用图像mcr.microsoft.com/dotnet/sdk:5.0。我正在运行它的码头形象是否已经过期了?
一直工作到几个小时前。
编辑:不确定它是否是重要的信息,但是在Linux中,这都是从GitHub操作中运行的。
发布于 2021-01-27 15:06:58
编辑:
解决方案1:
正如在github上提到的,如果您的Dockerfile看起来类似于以下内容:FROM mcr.microsoft.com/dotnet/sdk:5.0将其更改为
FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine,orFROM mcr.microsoft.com/dotnet/sdk:5.0-focal解决方案2:
在运行还原之前将其添加到您的Dockerfile中:
RUN curl -o /usr/local/share/ca-certificates/verisign.crt -SsL https://crt.sh/?d=1039083 && update-ca-certificates出于安全考虑,您可能希望下载和验证证书,并将其保存到您的回购中。这是验证软件包时间戳所必需的证书,默认情况下它包含在高寒和焦距中,但debian中缺少它。
解决方案3:
等待微软解决问题。他们在github上跟踪它,Nuget已经将它的状态设置为降级,直到问题得到解决:https://status.nuget.org/
原来的答案:
据我所知,道克在这件事上是对的。手动下载任何NuGet包,即:https://www.nuget.org/api/v2/package/System.ComponentModel.Annotations/5.0.0打开文件并查找.signature.p7s文件并使用默认程序打开它。它向我展示了微软的一份证书,它在当地时间今天下午1点就过期了。

我不知道为什么这不是对接之外的工具的问题。我知道有一种方法可以完全禁用NuGet的验证,这里解释了一些关于有效期的更多信息:https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028 https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3037
不过,我真的不想完全禁用支票。不幸的是,我也不知道该如何处理这件事
发布于 2021-01-27 15:53:33
目前,这个问题似乎与Debian的形象有关。
改用基于Ubuntu的映像:
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal https://stackoverflow.com/questions/65921037
复制相似问题