簡體   English   中英

作者主簽名的時間戳發現了一個建鏈問題:UntrustedRoot: self-signed certificate in certificate chain

[英]The author primary signature's timestamp found a chain building issue: UntrustedRoot: self signed certificate in certificate chain

在我的 .NET Core 項目上構建 docker 時,我的所有 NuGet 都出現以下錯誤:

80.19 /app/GradingTool.Tests/GradingTool.Tests.csproj:錯誤 NU3028:Package 'Microsoft.EntityFrameworkCore 5.0.0' 來自源 'https://api.nuget.org/時間戳發現鏈構建問題:UntrustedRoot:證書鏈中的自簽名證書 [/app/GradingTool.sln]

#12 80.20 /app/GradingTool.Tests/GradingTool.Tests.csproj: 錯誤 NU3037: Package 'Microsoft.EntityFrameworkCore 5.0.0' 來自源 'https://api.nuget.主簽名有效期已過。 [/app/GradingTool.sln]

#12 80.20 /app/GradingTool.Tests/GradingTool.Tests.csproj:錯誤 NU3028:Package 'Microsoft.EntityFrameworkCore 5.0.0' 來自源 'https://api.nuget 存儲庫。會簽的時間戳發現鏈構建問題:UntrustedRoot:證書鏈中的自簽名證書 [/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"]

更新:查看此公告: https://github.com/NuGet/Announcements/issues/49

目前,該問題似乎與 Debian 圖像有關。

改用 Ubuntu 或基於 Alpine 的圖像:

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

關注https://github.com/NuGet/Home/issues/10491以獲取更新。

在 Dockerfile 文件中,我從

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

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

這對我有用!

簡短的回答

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

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

一旦他們正式修補證書問題,go 返回:最新。

長答案

這是因為您正在使用的 Debian docker 映像中存在問題: mcr.microsoft.com/dotnet/sdk:latest :latest

The:latest 標簽使用 Debian 映像 (5.0.102-1-buster-slim-amd64) 和 Debian 發布了一個補丁,該補丁會產生證書問題。

NuGet 團隊發布了新的預發布 Debian 映像,可緩解 ca 證書問題。 在此處查看未解決的問題和圖像替換解決方法:

https://github.com/NuGet/Announcements/issues/49#issuecomment-768766265

Later on they'll publish the release version of SDK images (once the Debian ca-certificates package is released in Debian 10 Buster).

使用:focal 標簽(Ubuntu)也可以解決您的 .NET 應用程序的問題,盡管您必須考慮您不再使用 Debian。

最新更新: Microsoft 使用 sdk:5.0 等常規標簽發布了修補的 docker 圖像。 從:5.0.102-ca-patch-buster-slim-amd64 恢復到:5.0 是安全的

我認為 nuget.org 的證書存在一些問題。 我目前從 nuget.org 獲得所有 NuGet 軟件包的以下信息

error NU3037: Package 'Microsoft.NETCore.Platforms 3.1.0' from source 'https://api.nuget.org/v3/index.json': 作者主簽名有效期已過。

錯誤 NU3028:Package 'Microsoft.AspNetCore.Metadata 3.1.2' 來自源'https://api.nuget.org/v3/index.json':存儲庫會簽的時間戳發現鏈構建問題:不可信的證書 inRoot:證書鏈

如前所述,可以在此處關注問題的當前更新:
https://github.com/NuGet/Home/issues/10491
縮短您的旅程
已知的解決方法包括:

  • 降級到 .NET 核心 3.1
  • 如果使用 docker,請將基本映像從“FROM mcr.microsoft.com/dotnet/sdk:5.0”更改為“FROM mcr.microsoft.com/dotnet/sdk:5.0-focal”或“FROM mcr.microsoft.com/dotnet” /sdk:5.0-高山"
  • 將其放在 nuget.config 中的標簽內以完全禁用驗證(與 dotnet restore 一起使用):

<config> <add key="signatureValidationMode" value="accept" />

您也可以在此處查看狀態: https://status.nuget.org/

此更改也有效:

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

Better to go from Debian to Ubuntu and skip Alpine as .net Regions and Cultures are missing from Alpine. i:e sdk.5.0-focal 是您最好的選擇,並且確實解決了這個問題。

如果您不想更改基本映像,解決此問題的另一種方法是安裝ca-certificates package。

將此添加到您的 Dockerfile 中:

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

當然,一旦解決了根本問題,就可以再次刪除它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM