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.
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.
- Zaloguj się do NuGet.org.
- Przejdź do
Account settings
strony (lubManage Organization
>Edit Organization
jeśli chcesz zarejestrować certyfikat przy użyciu konta organizacji). - Rozwiń sekcję
Certificates
i wybierz pozycjęRegister new
. - Przeglądaj i wybierz plik certyfikatu, który został wyeksportowany wcześniej.
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
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).