Udostępnij za pośrednictwem


Podpisywanie pakietu NuGet

Podpisany pakiet umożliwia sprawdzanie weryfikacji integralności zawartości, co zapewnia ochronę przed manipulowaniem zawartością. Podpis pakietu służy również jako pojedyncze źródło prawdy o rzeczywistym pochodzeniu pakietu i wzmacnia autentyczność pakietu dla konsumenta. W tym przewodniku założono, że utworzono już pakiet.

Uzyskiwanie certyfikatu podpisywania kodu

Prawidłowe certyfikaty można uzyskać z publicznego urzędu certyfikacji, takiego jak:

Pełną listę urzędów certyfikacji zaufanych przez system Windows można również uzyskać z http://aka.ms/trustcertpartnerswitryny .

Do celów testowych można używać certyfikatów wystawionych samodzielnie. Jednak pakiety podpisane przy użyciu certyfikatów wystawionych samodzielnie nie są akceptowane przez NuGet.org. Dowiedz się więcej o tworzeniu certyfikatu testowego

Eksportowanie pliku certyfikatu

  • Istniejący certyfikat można wyeksportować do binarnego formatu DER przy użyciu Kreatora eksportu certyfikatów.

    Kreator eksportu certyfikatów

  • Certyfikat można również wyeksportować za pomocą polecenia Export-Certificate programu PowerShell.

Podpisywanie pakietu

Podpisywanie pakietu przy użyciu znaku dotnet nuget (wymaga zestawu SDK platformy .NET 6.0.100 lub nowszego).

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

lub

Podpisywanie pakietu przy użyciu znaku nuget (wymaga nuget.exe 4.6.0 lub nowszej):

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

Napiwek

Dostawca certyfikatów często udostępnia również adres URL serwera sygnatury czasowej, którego można użyć dla opcjonalnego argumentu pokazanego Timestamper powyżej. Zapoznaj się z dokumentacją dostawcy i/lub pomocą techniczną dotyczącą tego adresu URL usługi.

  • Możesz użyć certyfikatu dostępnego w magazynie certyfikatów lub użyć certyfikatu z pliku. Zobacz Dokumentację interfejsu wiersza polecenia dotyczącą podpisywania nuget.
  • Podpisane pakiety powinny zawierać znacznik czasu, aby upewnić się, że podpis pozostaje prawidłowy po wygaśnięciu certyfikatu podpisywania. W przeciwnym razie operacja podpisywania spowoduje wyświetlenie ostrzeżenia.
  • Szczegóły podpisu danego pakietu można wyświetlić przy użyciu narzędzia nuget verify.

Rejestrowanie certyfikatu w NuGet.org

Aby opublikować podpisany pakiet, należy najpierw zarejestrować certyfikat przy użyciu NuGet.org. Certyfikat jest potrzebny jako .cer plik w binarnym formacie DER.

  1. Zaloguj się do NuGet.org.
  2. Przejdź do Account settings strony (lub Manage Organization > Edit Organization jeśli chcesz zarejestrować certyfikat przy użyciu konta organizacji).
  3. Rozwiń sekcję Certificates i wybierz pozycję Register new.
  4. Przeglądaj i wybierz plik certyfikatu, który został wyeksportowany wcześniej. Zarejestrowane certyfikaty

Uwaga

  • Jeden użytkownik może przesłać wiele certyfikatów, a ten sam certyfikat może być zarejestrowany przez wielu użytkowników.
  • Po zarejestrowaniu certyfikatu przez użytkownika wszystkie przyszłe przesłania pakietów muszą być podpisane przy użyciu jednego z certyfikatów. Zobacz Zarządzanie wymaganiami dotyczącymi podpisywania pakietu w NuGet.org
  • Użytkownicy mogą również usunąć zarejestrowany certyfikat z konta. Po usunięciu certyfikatu nowe pakiety podpisane przy użyciu tego certyfikatu nie powiedzą się podczas przesyłania. Nie ma to wpływu na istniejące pakiety.

Publikowanie pakietu

Teraz możesz opublikować pakiet w NuGet.org. Zobacz Publikowanie pakietów.

Tworzenie certyfikatu testowego

Do celów testowych można używać certyfikatów wystawionych samodzielnie. Aby utworzyć certyfikat wystawiony samodzielnie, użyj polecenia New-SelfSignedCertificate programu 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" 

To polecenie tworzy certyfikat testowy dostępny w osobistym magazynie certyfikatów bieżącego użytkownika. Magazyn certyfikatów można otworzyć, uruchamiając polecenie certmgr.msc , aby wyświetlić nowo utworzony certyfikat.

Ostrzeżenie

NuGet.org nie akceptuje pakietów podpisanych przy użyciu certyfikatów wystawionych samodzielnie.

Zarządzanie wymaganiami dotyczącymi podpisywania pakietu w NuGet.org

  1. Zaloguj się do NuGet.org.

  2. Przejdź do strony Manage PackagesKonfigurowanie osób podpisujących pakiety

  • Jeśli jesteś jedynym właścicielem pakietu, jesteś wymaganym sygnatariuszem, czyli możesz użyć dowolnego zarejestrowanego certyfikatu do podpisywania i publikowania pakietów w celu NuGet.org.

  • Jeśli pakiet ma wielu właścicieli, domyślnie do podpisania pakietu można użyć certyfikatów "Dowolny" właścicieli. Jako współwłaściciel pakietu możesz zastąpić "Dowolne" samodzielnie lub innym współwłaścicielem jako wymaganym sygnatariuszem. Jeśli ustawisz właściciela, który nie ma żadnego zarejestrowanego certyfikatu, pakiety niepodpisane będą dozwolone.

  • Podobnie, jeśli dla pakietu wybrano domyślną opcję "Dowolna", w której jeden właściciel ma zarejestrowany certyfikat, a inny właściciel nie ma zarejestrowanego certyfikatu, NuGet.org akceptuje podpisany pakiet z podpisem zarejestrowanym przez jednego z jego właścicieli lub niepodpisanym pakietem (ponieważ jeden z właścicieli nie ma żadnego zarejestrowanego certyfikatu).