Delen via


Een NuGet-pakket ondertekenen

Een ondertekend pakket biedt verificatiecontroles voor inhoudsintegriteit, die bescherming biedt tegen manipulatie van inhoud. De pakkethandtekening fungeert ook als de ultieme bron van informatie over de werkelijke oorsprong van het pakket en versterkt de echtheid van het pakket voor de consument. In deze handleiding wordt ervan uitgegaan dat u al een pakket hebt gemaakt.

Een certificaat voor ondertekening van programmacode ophalen

Geldige certificaten kunnen worden verkregen bij een openbare certificeringsinstantie, zoals:

De volledige lijst met certificeringsinstanties die door Windows worden vertrouwd, kan ook worden verkregen van http://aka.ms/trustcertpartners.

U kunt zelf uitgegeven certificaten gebruiken voor testdoeleinden. Pakketten die zijn ondertekend met zelf uitgegeven certificaten, worden echter niet geaccepteerd door NuGet.org. Meer informatie over het maken van een testcertificaat

Het certificaatbestand exporteren

  • Als uw certificaat is opgeslagen in een hardwaretoken, moet u het certificaat niet exporteren. Geef in plaats daarvan de vingerafdrukken van het SHA-2-familiecertificaat (vingerafdruk) op met behulp van de optie --certificate-fingerprint <SHA-2fingerprint> (vervangen --certificate-path <PathToTheCertificate>)

  • U kunt een bestaand certificaat exporteren naar een binaire DER-indeling met behulp van de wizard Certificaat exporteren.

    Certificaatexportwizard

  • U kunt het certificaat ook exporteren met behulp van de Export-Certificate PowerShell-opdracht.

Het pakket ondertekenen

Onderteken het pakket met dotnet nuget-teken (hiervoor is .NET 6.0.100 SDK of hoger vereist).

dotnet nuget sign MyPackage.nupkg --certificate-path <PathToTheCertificate> --timestamper <TimestampServiceURL>

or

Onderteken het pakket met nuget-teken (hiervoor is nuget.exe 4.6.0 of hoger vereist):

nuget sign MyPackage.nupkg -CertificatePath <PathToTheCertificate> -Timestamper <TimestampServiceURL>

Aanbeveling

De certificaatprovider biedt vaak ook een tijdstempelserver-URL die u kunt gebruiken voor het Timestamper optionele argument dat hierboven wordt weergegeven. Raadpleeg de documentatie en/of ondersteuning van uw provider voor die service-URL.

  • U kunt een certificaat gebruiken dat beschikbaar is in het certificaatarchief of een certificaat uit een bestand gebruiken. Zie CLI-naslaginformatie voor nuget-teken.
  • Ondertekende pakketten moeten een tijdstempel bevatten om ervoor te zorgen dat de handtekening geldig blijft wanneer het handtekeningcertificaat is verlopen. Anders produceert de tekenbewerking een waarschuwing.
  • U kunt de handtekeningdetails van een bepaald pakket bekijken met nuget verify.

Het certificaat registreren op NuGet.org

Als u een ondertekend pakket wilt publiceren, moet u het certificaat eerst registreren bij NuGet.org. U hebt het certificaat nodig als een .cer bestand in een binaire DER-indeling.

  1. Meld u aan bij NuGet.org.
  2. Ga naar Account settings (of Manage Organization>Edit Organization als u het certificaat wilt registreren bij een organisatieaccount).
  3. Vouw de Certificates sectie uit en selecteer Register new.
  4. Blader en selecteer het certificaatbestand dat eerder is geëxporteerd. Geregistreerde certificaten

Opmerking

  • Eén gebruiker kan meerdere certificaten indienen en hetzelfde certificaat kan door meerdere gebruikers worden geregistreerd.
  • Terwijl een gebruiker een of meer certificaten heeft geregistreerd, moeten alle pakketinzendingen zijn ondertekend met een van de certificaten. Zie Ondertekeningsvereisten voor uw pakket beheren op NuGet.org
  • Gebruikers kunnen ook een geregistreerd certificaat uit het account verwijderen. Zodra een certificaat is verwijderd, mislukken nieuwe pakketten die zijn ondertekend met dat certificaat bij verzending. Bestaande pakketten worden niet beïnvloed.

Het pakket publiceren

U kunt het pakket nu publiceren naar NuGet.org. Zie Publicatiepakketten.

Een testcertificaat maken

U kunt zelf uitgegeven certificaten gebruiken voor testdoeleinden. Als u een zelf uitgegeven certificaat wilt maken, gebruikt u de New-SelfSignedCertificate PowerShell-opdracht.

New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" `
                          -FriendlyName "NuGetTestDeveloper" `
                          -Type CodeSigning `
                          -KeyUsage DigitalSignature `
                          -KeyLength 2048 `
                          -KeyAlgorithm RSA `
                          -HashAlgorithm SHA256 `
                          -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
                          -CertStoreLocation "Cert:\CurrentUser\My" 

Met deze opdracht maakt u een testcertificaat dat beschikbaar is in het persoonlijke certificaatarchief van de huidige gebruiker. U kunt de certificaatopslag openen door certmgr.msc uit te voeren om het zojuist aangemaakte certificaat te bekijken.

Waarschuwing

NuGet.org accepteert geen pakketten die zijn ondertekend met zelf-uitgegeven certificaten.

Ondertekeningsvereisten voor uw pakket beheren op NuGet.org

  1. Meld u aan bij NuGet.org.

  2. Ga naar Manage PackagesPakket ondertekenaars configureren

  • Als u de enige eigenaar van een pakket bent, bent u de vereiste ondertekenaar, dat wil gezegd, u kunt een van de geregistreerde certificaten gebruiken om uw pakketten te ondertekenen en te publiceren naar NuGet.org.

  • Als een pakket meerdere eigenaren heeft, kunnen de certificaten van elke eigenaar standaard worden gebruikt om het pakket te ondertekenen. Als mede-eigenaar van het pakket kunt u 'Any' vervangen door uzelf of een andere mede-eigenaar om als vereiste ondertekenaar te dienen. Als u een eigenaar aanmaakt die geen certificaat heeft geregistreerd, worden niet-ondertekende pakketten toegestaan.

  • Als de standaardoptie Any is geselecteerd voor een pakket waarin een eigenaar een certificaat heeft geregistreerd en een andere eigenaar geen certificaat heeft geregistreerd, accepteert NuGet.org een ondertekend pakket met een handtekening die is geregistreerd door een van de eigenaren of een niet-ondertekend pakket (omdat een van de eigenaren geen certificaat heeft geregistreerd).