![](/img/trans.png)
[英]How to provide certificate chain in SSLStream's AuthenticateAsServer()?
[英]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
在 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
縮短您的旅程
已知的解決方法包括:
<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.