Dela via


Signera ett NuGet-paket

Ett signerat paket möjliggör verifiering av innehållsintegritet, vilket ger skydd mot innehållsmanipulering. Paketsignaturen fungerar också som en enda sanningskälla om paketets faktiska ursprung och stärker paketets äkthet för konsumenten. Den här guiden förutsätter att du redan har skapat ett paket.

Hämta ett kodsigneringscertifikat

Giltiga certifikat kan hämtas från en offentlig certifikatutfärdare, till exempel:

Den fullständiga listan över certifikatutfärdare som är betrodda av Windows kan också hämtas från http://aka.ms/trustcertpartners.

Du kan använda självutfärdade certifikat i testsyfte. Paket som signeras med självutfärdade certifikat godkänns dock inte av NuGet.org. Läs mer om att skapa ett testcertifikat

Exportera certifikatfilen

  • Du kan exportera ett befintligt certifikat till ett binärt DER-format med hjälp av guiden Exportera certifikat.

    Guiden för certifikatexport

  • Du kan också exportera certifikatet med hjälp av kommandotExport-Certificate PowerShell.

Signera paketet

Signera paketet med dotnet nuget-tecken (kräver .NET 6.0.100 SDK eller senare).

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

eller

Signera paketet med nuget-tecknet (kräver nuget.exe 4.6.0 eller senare):

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

Tips/Råd

Certifikatprovidern tillhandahåller ofta också en tidsstämplingsserver-URL som du kan använda för det Timestamper valfria argumentet som visas ovan. Kontakta leverantörens dokumentation och/eller support för tjänstens URL.

  • Du kan använda ett certifikat som är tillgängligt i certifikatarkivet eller använda ett certifikat från en fil. Se CLI-referens för nuget-tecken.
  • Signerade paket bör innehålla en tidsstämpel för att se till att signaturen förblir giltig när signeringscertifikatet har upphört att gälla. Annars ger signeringsåtgärden en varning.
  • Du kan se signaturinformationen för ett visst paket med hjälp av nuget verify.

Registrera certifikatet på NuGet.org

Om du vill publicera ett signerat paket måste du först registrera certifikatet med NuGet.org. Du behöver certifikatet som en .cer fil i binärt DER-format.

  1. Logga in på NuGet.org.
  2. Gå till Account settings (eller Manage Organization>Edit Organization om du vill registrera certifikatet med ett organisationskonto).
  3. Expandera avsnittet Certificates och välj Register new.
  4. Bläddra och välj certifikatfilen som exporterades tidigare. Registrerade certifikat

Anmärkning

  • En användare kan skicka flera certifikat och samma certifikat kan registreras av flera användare.
  • När en användare har registrerat ett certifikat måste alla framtida paketöverföringar signeras med ett av certifikaten. Se Hantera signeringskrav för ditt paket på NuGet.org
  • Användare kan också ta bort ett registrerat certifikat från kontot. När ett certifikat har tagits bort misslyckas nya paket som signerats med certifikatet vid överföring. Befintliga paket påverkas inte.

Publicera paketet

Nu är du redo att publicera paketet till NuGet.org. Se Publicera paket.

Skapa ett testcertifikat

Du kan använda självutfärdade certifikat i testsyfte. Om du vill skapa ett självutfärdat certifikat använder du kommandotNew-SelfSignedCertificate PowerShell.

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" 

Det här kommandot skapar ett testcertifikat som är tillgängligt i den aktuella användarens personliga certifikatarkiv. Du kan öppna certifikatarkivet genom att köra certmgr.msc för att se det nyligen skapade certifikatet.

Varning

NuGet.org accepterar inte paket som har signerats med självutfärdade certifikat.

Hantera signeringskrav för ditt paket på NuGet.org

  1. Logga in på NuGet.org.

  2. Gå till Manage PackagesKonfigurera paketsignatörer

  • Om du är ensam ägare till ett paket är du den obligatoriska undertecknaren, det vill sa att du kan använda något av de registrerade certifikaten för att signera och publicera dina paket för att NuGet.org.

  • Om ett paket har flera ägare kan som standard "Alla" ägares certifikat användas för att signera paketet. Som delägare av paketet kan du åsidosätta "Vem som helst" med dig själv eller någon annan medägare för att vara den obligatoriska undertecknaren. Om du skapar en ägare som inte har något certifikat registrerat, då kommer osignerade paket att tillåtas.

  • På samma sätt, om standardalternativet "Alla" är valt för ett paket där en ägare har ett registrerat certifikat och en annan ägare inte har något registrerat certifikat, accepterar NuGet.org antingen ett signerat paket med en signatur registrerad av en av dess ägare eller ett osignerat paket (eftersom en av ägarna inte har något registrerat certifikat).