Podepsání balíčku NuGet

Podepsaný balíček umožňuje kontroly ověření integrity obsahu, které poskytují ochranu proti manipulaci s obsahem. Podpis balíčku slouží také jako jediný zdroj pravdy o skutečném původu balíčku a podporuje pravost balíčku pro spotřebitele. V této příručce se předpokládá, že jste už vytvořili balíček.

Získání podpisového certifikátu kódu

Platné certifikáty lze získat od veřejné certifikační autority, například:

Úplný seznam certifikačních autorit důvěryhodných systémem Windows lze získat také od http://aka.ms/trustcertpartnersspolečnosti .

Pro účely testování můžete použít certifikáty vystavené svým držitelem. Balíčky podepsané pomocí certifikátů vydaných svým držitelem ale NuGet.org nepřijímají. Další informace o vytvoření testovacího certifikátu

Export souboru certifikátu

  • Existující certifikát můžete exportovat do binárního formátu DER pomocí Průvodce exportem certifikátu.

    Certificate Export Wizard

  • Certifikát můžete také exportovat pomocí příkazu PowerShellu pro export certifikátu.

Podepsání balíčku

Podepište balíček pomocí podpisu nuget dotnet (vyžaduje sadu .NET 6.0.100 SDK nebo novější).

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

nebo

Podepište balíček pomocí znaku nuget (vyžaduje nuget.exe 4.6.0 nebo novější):

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

Tip

Zprostředkovatel certifikátů často také poskytuje adresu URL serveru časového razítka, kterou můžete použít pro Timestamper volitelný argument uvedený výše. Informace o adrese URL této služby najdete v dokumentaci vašeho poskytovatele nebo podpoře.

  • Můžete použít certifikát dostupný v úložišti certifikátů nebo použít certifikát ze souboru. Viz referenční informace k rozhraní příkazového řádku pro znaménko NuGet.
  • Podepsané balíčky by měly obsahovat časové razítko, aby se zajistilo, že podpis zůstane platný při vypršení platnosti podpisového certifikátu. Jinak operace podepsání vytvoří upozornění.
  • Podrobnosti podpisu daného balíčku můžete zobrazit pomocí ověření nugetu.

Registrace certifikátu na NuGet.org

Pokud chcete publikovat podepsaný balíček, musíte nejprve zaregistrovat certifikát v NuGet.org. Certifikát potřebujete jako .cer soubor v binárním formátu DER.

  1. Přihlaste se k NuGet.org.
  2. Přejděte na Account settings stránku (nebo Manage Organization>Edit Organization pokud chcete certifikát zaregistrovat u účtu organizace).
  3. Certificates Rozbalte oddíl a vyberte Register new.
  4. Procházejte a vyberte soubor certficate, který jste vyexportovali dříve. Registered Certificates

Poznámka:

  • Jeden uživatel může odeslat více certifikátů a stejný certifikát může zaregistrovat více uživatelů.
  • Jakmile má uživatel zaregistrovaný certifikát, musí být všechny budoucí odeslání balíčku podepsané jedním z certifikátů. Viz Správa požadavků na podepisování balíčku na NuGet.org
  • Uživatelé také můžou z účtu odebrat zaregistrovaný certifikát. Po odebrání certifikátu se při odeslání nezdaří nové balíčky podepsané tímto certifikátem. Stávající balíčky nejsou ovlivněny.

Publikování balíčku

Teď jste připraveni balíček publikovat do NuGet.org. Viz Balíčky publikování.

Vytvoření testovacího certifikátu

Pro účely testování můžete použít certifikáty vystavené svým držitelem. Pokud chcete vytvořit certifikát vydaný vlastním držitelem, použijte příkaz New-SelfSignedCertificate PowerShellu.

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" 

Tento příkaz vytvoří testovací certifikát dostupný v osobním úložišti certifikátů aktuálního uživatele. Úložiště certifikátů můžete otevřít spuštěním spuštění certmgr.msc a zobrazit nově vytvořený certifikát.

Upozorňující

NuGet.org nepřijímá balíčky podepsané certifikáty vystavenými svým držitelem.

Správa požadavků na podepisování balíčku na NuGet.org

  1. Přihlaste se k NuGet.org.

  2. Přejděte na Manage PackagesConfigure package signers.

  • Pokud jste jediným vlastníkem balíčku, jste požadovaným podepisovačem, tj. k podepisování a publikování balíčků do NuGet.org můžete použít kterýkoli z registrovaných certifikátů.

  • Pokud má balíček více vlastníků, můžete k podepsání balíčku použít certifikáty vlastníka libovolného vlastníka. Jako spoluvlastník balíčku můžete "Any" přepsat sami sobě nebo jiným spoluvlastníkem, aby byl požadovaným podepisovačem. Pokud nastavíte vlastníka, který nemá zaregistrovaný žádný certifikát, budou povolené nepodepsané balíčky.

  • Podobně platí, že pokud je pro balíček vybrána výchozí možnost Any (Libovolný), ve které má jeden vlastník zaregistrovaný certifikát a jiný vlastník nemá zaregistrovaný žádný certifikát, NuGet.org přijme podepsaný balíček s podpisem registrovaným jedním z jeho vlastníků nebo nepodepsaným balíčkem (protože jeden z vlastníků nemá zaregistrovaný žádný certifikát).