Verificatie van NuGet-ondertekend pakket
U kunt een NuGet-pakket ondertekenen om pakketgebruikers in staat te stellen de echtheid en integriteit van het pakket te valideren. Als verificatie is ingeschakeld, verifieert .NET ondertekende pakketten tijdens een herstelbewerking voor pakketten. Dit gebeurt automatisch wanneer een pakketgebruiker het project bouwt of uitvoert.
NuGet-pakkethandtekeningen zijn gebaseerd op X.509-certificaten en een vereiste voor verificatie van ondertekend pakket is een certificaatbasisarchief dat geldig is voor zowel ondertekening als tijdstempel van code.
Vanaf .NET 6.0.400 SDK gebruikt NuGet certificaatbundels die zijn opgenomen in de .NET SDK om ondertekende pakketten te verifiëren waarbij een geschikt systeemhoofdarchief niet beschikbaar is. Deze bundels zijn afkomstig uit het vertrouwde basisprogramma van Microsoft en bevatten dezelfde certificaten voor ondertekening en tijdstempel van code als het basisarchief in Windows. Deze certificaatbundels moeten alle basiscertificaten bevatten die nodig zijn om pakketten van NuGet.org te verifiëren.
Sommige NuGet-opdrachten, zoals sign
en verify
, voeren altijd verificatie van ondertekende pakketten uit.
In de volgende secties voor elk besturingssysteem wordt beschreven:
- Wanneer impliciete verificatie tijdens herstelbewerkingen standaard is ingeschakeld.
- Hoe kan ik het inschakelen.
- Welke hoofdarchieven worden gebruikt.
Vensters
Verificatie wordt altijd ingeschakeld tijdens herstelbewerkingen van pakketten.
NuGet maakt gebruik van het standaardhoofdarchief in Windows, dat al ondersteuning biedt voor ondertekening en tijdstempel voor algemeen gebruik. .NET SDK-certificaatbundels worden niet gebruikt. Alle verificatiefunctionaliteit voor ondertekende pakketten wordt ondersteund in Windows in de .NET SDK-versie waarin deze is geïntroduceerd.
Linux
Belangrijk
Hoewel verificatiefunctionaliteit voor ondertekende pakketten is toegevoegd aan .NET 5 SDK's, wordt de functionaliteit pas ondersteund op Linux als .NET 6.0.400 SDK. Gebruik geen verificatie van ondertekende pakketten met .NET SDK-versies ouder dan 6.0.400.
Vóór .NET 8 SDK wordt verificatie standaard uitgeschakeld tijdens herstelbewerkingen van pakketten. Als u zich wilt aanmelden, stelt u de omgevingsvariabele DOTNET_NUGET_SIGNATURE_VERIFICATION
in op true
.
Vanaf .NET 8 SDK is verificatie standaard ingeschakeld. Als u zich wilt afmelden, stelt u de omgevingsvariabele DOTNET_NUGET_SIGNATURE_VERIFICATION
in op false
.
Voor verificatie van certificaat voor ondertekening van programmacode test NuGet eerst op een certificaatbundel op de volgende locatie:
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
Als er een geldige certificaatbundel wordt gevonden, geeft NuGet er de voorkeur aan via de certificaatbundel van de .NET SDK voor het ondertekenen van programmacode. Als deze ten minste dezelfde set basiscertificaten bevat als de certificaatbundel van de .NET SDK, moet nuGet-verificatie van ondertekende pakketten lukken. Als er geen basiscertificaten zijn, zoals die worden gebruikt in ondertekende pakketten op NuGet.org, mislukt nuGet-verificatie van ondertekende pakketten met een niet-vertrouwde status (via NU3018 of NU3028). Het toevoegen van basiscertificaten aan deze certificaatbundel kan geslaagde verificatie inschakelen; Houd er echter rekening mee dat deze certificaatbundel een systeembreed vertrouwensarchief is, terwijl .NET SDK-certificaatbundels worden gebruikt als een vertrouwensarchief voor de hele toepassing.
Als er op de bovenstaande locatie geen geldige certificaatbundel wordt gevonden, valt NuGet terug op het gebruik van de certificaatbundel van de .NET SDK voor ondertekening van code.
Voor timestamping van certificaatverificatie gebruikt NuGet altijd de certificaatbundel van de .NET SDK voor tijdstempels.
macOS
Verificatie is standaard uitgeschakeld tijdens herstelbewerkingen van pakketten. Als u zich wilt aanmelden, stelt u de omgevingsvariabele DOTNET_NUGET_SIGNATURE_VERIFICATION
in op true
. We raden u echter aan verificatie niet in te schakelen. Zie NuGet/Home#11985 en NuGet/Home#11986 voor meer informatie.
NuGet gebruikt alleen de certificaatbundels van de .NET SDK.
Belangrijk
Hoewel verificatiefunctionaliteit voor ondertekende pakketten is toegevoegd aan .NET 5 SDK's, wordt de functionaliteit momenteel niet ondersteund in macOS. Gebruik geen verificatie van ondertekende pakketten met .NET SDK-versies ouder dan 6.0.400. Laat deze standaard uitgeschakeld.