.net 作者主要签名';s时间戳发现链生成问题:不可信:证书链中的自签名证书

.net 作者主要签名';s时间戳发现链生成问题:不可信:证书链中的自签名证书,.net,docker,ssl,.net-core,nuget,.net,Docker,Ssl,.net Core,Nuget,在.NET Core项目上进行docker构建时,我在所有NuGet上都出现以下错误: 80.19/app/GradingTool.Tests/GradingTool.Tests.csproj:错误NU3028:源程序包“Microsoft.EntityFrameworkCore 5.0.0”https://api.nuget.org/v3/index.json“:作者主签名的时间戳发现了一个链构建问题:不信任:证书链中的自签名证书[/app/GradingTool.sln] #12 80.20

在.NET Core项目上进行docker构建时,我在所有NuGet上都出现以下错误:

80.19/app/GradingTool.Tests/GradingTool.Tests.csproj:错误NU3028:源程序包“Microsoft.EntityFrameworkCore 5.0.0”https://api.nuget.org/v3/index.json“:作者主签名的时间戳发现了一个链构建问题:不信任:证书链中的自签名证书[/app/GradingTool.sln]

#12 80.20/app/GradingTool.Tests/GradingTool.Tests.csproj:错误号3037:源文件包“Microsoft.EntityFrameworkCore 5.0.0”https://api.nuget.org/v3/index.json“:作者主签名有效期已过期。[/app/GradingTool.sln]

#12 80.20/app/GradingTool.Tests/GradingTool.Tests.csproj:错误NU3028:源代码中的包“Microsoft.EntityFrameworkCore 5.0.0”https://api.nuget.org/v3/index.json“:存储库会签的时间戳发现了链构建问题:不可信:证书链中的自签名证书[/app/GradingTool.sln]

我以前从来没有犯过这个错误, 有人能帮我找出问题所在吗

Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:latest AS build-env
WORKDIR /app
RUN apt-get update -yq \
    && apt-get install curl gnupg -yq \
    && curl -sL https://deb.nodesource.com/setup_10.x | bash \
    && apt-get install nodejs -yq
# Copy csproj and restore as distinct layers
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:latest
RUN apt-get update \
    && apt-get install -y --no-install-recommends libgdiplus libc6-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build-env /app/out .
ENV ASPNETCORE_URLS="http://+:4200"
ENV ASPNETCORE_ENVIRONMENT="Production"
ENV GOOGLE_APPLICATION_CREDENTIALS="Credentials/SchoolTools-e9f260bdf56e.json"
ENV VIRTUAL_HOST="eva.schooltools.lu,www.eva.schooltools.lu,schooltools.lu,www.schooltools.lu"
ENV LETSENCRYPT_HOST="eva.schooltools.lu,www.eva.schooltools.lu,schooltools.lu,www.schooltools.lu"
ENV LETSENCRYPT_EMAIL="wilson.silva@edutec.lu"
EXPOSE 4200
ENTRYPOINT ["dotnet", "GradingTool.dll"]
RUN echo "deb http://deb.debian.org/debian bullseye main" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
     ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i '$ d' /etc/apt/sources.list

我认为nuget.org的证书有一些问题。我目前从NuGet.org获得了所有NuGet包的以下信息

错误NU3037:源程序包“Microsoft.NETCore.Platform 3.1.0”https://api.nuget.org/v3/index.json“:作者主签名有效期已过期

错误NU3028:来自源的包“Microsoft.AspNetCore.Metadata 3.1.2”https://api.nuget.org/v3/index.json“:存储库会签的时间戳发现了链生成问题:不可信:证书链中的自签名证书


更新:查看此公告:

目前,这个问题似乎与Debian映像有关

改为切换到Ubuntu或基于Alpine的图像:

FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build-env

跟踪更新。

如前所述,可在此处跟踪当前问题的更新:

缩短旅程
已知的解决方法包括:

  • 降级至.NET Core 3.1
  • 如果使用docker,请将基本映像从“from mcr.microsoft.com/dotnet/sdk:5.0”更改为 来自mcr.microsoft.com/dotnet/sdk:5.0-focal“或” 来自mcr.microsoft.com/dotnet/sdk:5.0-alpine“
  • 将其放入nuget.config中的标记中,以完全禁用验证(与dotnet restore一起使用):

在Dockerfile文件中,我从

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim


这对我有用

简短回答

替换
mcr.microsoft.com/dotnet/sdk:latest

使用
mcr.microsoft.com/dotnet/sdk:5.0.102-ca-patch-buster-slim-amd64

一旦他们正式修补证书问题,请返回:latest

长答案

这是因为您使用的Debian docker映像中存在问题:
mcr.microsoft.com/dotnet/sdk:latest

最新的标签使用了Debian映像(5.0.102-1-buster-slim-amd64),Debian发布了一个产生证书问题的补丁

NuGet团队发布了新的预发布Debian映像,以缓解ca证书问题。请参见此处的开放问题和图像替换解决方案:

稍后,他们将发布SDK映像的发布版本(在Debian 10 Buster中发布Debian ca证书包之后)

使用:焦点标签(Ubuntu)也可以解决你的.NET应用程序的问题,尽管你必须考虑你不再使用Debian了。 最新更新:


微软使用传统的标签如sdk:5.0发布了修补过的docker图像。可以安全地从:5.0.102-ca-patch-buster-slim-amd64恢复到:5.0

此更改也适用于:

FROM mcr.microsoft.com/dotnet/sdk:5.0-focal

最好从Debian转到Ubuntu,跳过Alpine,因为Alpine缺少.net区域和文化!i、 e sdk:5.0-focal是您的最佳选择,确实可以解决此问题。

如果您不想更改基本映像,另一种解决方法是安装
ca证书

将此添加到Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:latest AS build-env
WORKDIR /app
RUN apt-get update -yq \
    && apt-get install curl gnupg -yq \
    && curl -sL https://deb.nodesource.com/setup_10.x | bash \
    && apt-get install nodejs -yq
# Copy csproj and restore as distinct layers
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:latest
RUN apt-get update \
    && apt-get install -y --no-install-recommends libgdiplus libc6-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build-env /app/out .
ENV ASPNETCORE_URLS="http://+:4200"
ENV ASPNETCORE_ENVIRONMENT="Production"
ENV GOOGLE_APPLICATION_CREDENTIALS="Credentials/SchoolTools-e9f260bdf56e.json"
ENV VIRTUAL_HOST="eva.schooltools.lu,www.eva.schooltools.lu,schooltools.lu,www.schooltools.lu"
ENV LETSENCRYPT_HOST="eva.schooltools.lu,www.eva.schooltools.lu,schooltools.lu,www.schooltools.lu"
ENV LETSENCRYPT_EMAIL="wilson.silva@edutec.lu"
EXPOSE 4200
ENTRYPOINT ["dotnet", "GradingTool.dll"]
RUN echo "deb http://deb.debian.org/debian bullseye main" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
     ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i '$ d' /etc/apt/sources.list

当然,只要基本问题得到解决,就可以再次删除此项。

docker文件和项目的外观如何?我添加了docker文件,但您所说的项目外观是什么意思?
GradingTool.Tests.csproj的内容。为什么你需要安装nodejs和libgdiplus?我的项目有4个解决方案,GradingTool.Tests.csproj、GradingTool.Core.csproj、GradingTool.Data.csproj和GradingTool.csproj。注意更新你和我的错误,nuget.org有提到吗,然而,我们构建服务器上的所有项目突然报告了来自的所有包的NU3028和NU3037。是的,在他们的GitHub Repo下的问题中,有许多人与我们有相同的问题,所以希望他们能尽快解决!谢谢你的回复!我的项目也发生了同样的事情,工作到昨晚。仅供参考,微软发布了一些临时图片,直到问题得到解决:只是想知道:你们认为这是他们花了很长时间才解决的问题吗?我刚刚将我们的项目升级到.NET5(未合并回master;),并意识到它不再有效。。因此,基本上:你认为这会在几天内修复,还是几个月内修复?@OschtärEi他们现在发布了新图片作为解决办法,请查看上面链接的公告评论。这要求您修改docker标记,但它仍然是基于debian的。我想主要的问题需要一点时间。这不是微软的问题,而是Debian的问题。@MartinUllrich是的,我看到了解决方法。我的意思是,这样你就可以不用解决方法来使用它:)值得强调的是,这将从基于Debian的docker图像转移到基于Alpine的docker图像,因此可能会有