Megosztás a következőn keresztül:


NuGet aláírt csomag ellenőrzése

A NuGet-csomag aláírásával engedélyezheti a csomagfogyasztók számára a csomag hitelességének és integritásának ellenőrzését. Ha az ellenőrzés engedélyezve van, a .NET ellenőrzi az aláírt csomagokat egy csomag-visszaállítási művelet során, amely automatikusan megtörténik, amikor egy csomagfelhasználó létrehozza vagy futtatja a projektet.

A NuGet-csomagaláírások X.509-tanúsítványokon alapulnak, és az aláírt csomag ellenőrzésének előfeltétele egy olyan főtanúsítvány-tároló, amely a kódaláírásra és az időbélyegezésre egyaránt érvényes.

A .NET 6.0.400 SDK-tól kezdve a NuGet a .NET SDK-ban található tanúsítványcsomagokkal ellenőrzi az aláírt csomagokat, amelyekben nem érhető el megfelelő rendszergyökér-tároló. Ezek a csomagok a Microsoft megbízható gyökérprogramjából származnak, és ugyanazokat a kódaláírási és időbélyegző tanúsítványokat tartalmazzák, mint a Windows gyökértárolója. Ezeknek a tanúsítványcsomagoknak tartalmazniuk kell a NuGet.org csomagjainak ellenőrzéséhez szükséges összes főtanúsítványt.

Egyes NuGet-parancsok, például sign és verify, mindig aláírt csomagellenőrzést hajtanak végre.

Az egyes operációs rendszerekhez tartozó alábbi szakaszok a következőket írják le:

  • Ha alapértelmezés szerint engedélyezve van az implicit ellenőrzés a visszaállítási műveletek során.
  • Hogyan lehet engedélyezni.
  • Milyen gyökértárolókat használnak.

Windows

Az ellenőrzés mindig engedélyezve van a csomag-visszaállítási műveletek során.

A NuGet a Windows alapértelmezett gyökértárolóját használja, amely már támogatja az általános célú kódaláírást és -időbélyegezést. A .NET SDK-tanúsítványcsomagok nem használhatók. Windows rendszeren az összes aláírt csomag-ellenőrzési funkció támogatott abban a .NET SDK-verzióban, amelyben bevezették.

Linux

Fontos

Bár a .NET 5 SDK-kban az aláírt csomag-ellenőrzési funkciók lettek hozzáadva, a funkció Linuxon csak .NET 6.0.400 SDK-val támogatott. Ne használjon aláírt csomagellenőrzést a .NET SDK 6.0.400-nál korábbi verzióival.

A .NET 8 SDK előtt az ellenőrzés alapértelmezés szerint le van tiltva a csomag-visszaállítási műveletek során. A bejelentkezéshez állítsa a környezeti változót DOTNET_NUGET_SIGNATURE_VERIFICATION a következőre true: .

A .NET 8 SDK-tól kezdve az ellenőrzés alapértelmezés szerint engedélyezve van. A letiltáshoz állítsa a környezeti változót DOTNET_NUGET_SIGNATURE_VERIFICATION a következőre false: .

A kódaláíró tanúsítvány ellenőrzéséhez a NuGet először a következő helyen fogja ellenőrizni a tanúsítványcsomagot:

/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

Ha érvényes tanúsítványcsomagot talál, a NuGet a .NET SDK tanúsítványcsomagjával szemben előnyben részesíti a kódaláíráshoz. Ha legalább ugyanazokat a főtanúsítványokat tartalmazza, mint a .NET SDK tanúsítványcsomagja, akkor a NuGet aláírt csomag ellenőrzésének sikeresnek kell lennie. Ha nem rendelkezik főtanúsítványokkal, például a NuGet.org aláírt csomagokban használtakkal, a NuGet aláírt csomag ellenőrzése nem megbízható állapottal fog meghiúsulni (NU3018 vagy NU3028 használatával). Ha főtanúsítványokat ad hozzá ehhez a tanúsítványcsomaghoz, az lehetővé teszi a sikeres ellenőrzést; Ne feledje azonban, hogy ez a tanúsítványcsomag egy rendszerszintű megbízhatósági tároló, míg a .NET SDK-tanúsítványcsomagok alkalmazásszintű megbízhatósági tárolóként használatosak.

Ha a fenti helyen nem található érvényes tanúsítványcsomag, a NuGet vissza fog esni a .NET SDK tanúsítványcsomagjának használatára a kódaláíráshoz.

Az időbélyegző tanúsítvány ellenőrzéséhez a NuGet mindig a .NET SDK tanúsítványcsomagját használja az időbélyegezéshez.

macOS

Az ellenőrzés alapértelmezés szerint le van tiltva a csomag-visszaállítási műveletek során. A bejelentkezéshez állítsa a környezeti változót DOTNET_NUGET_SIGNATURE_VERIFICATION a következőre true: . Javasoljuk azonban, hogy ne engedélyezze az ellenőrzést. További információ: NuGet/Home#11985 és NuGet/Home#11986.

A NuGet csak a .NET SDK tanúsítványcsomagjait használja.

Fontos

Bár a .NET 5 SDK-ban az aláírt csomagellenőrzési funkciók is hozzáadva lettek, a funkció jelenleg nem támogatott macOS rendszeren. Ne használjon aláírt csomagellenőrzést a .NET SDK 6.0.400-nál korábbi verzióival. Alapértelmezés szerint hagyja letiltva.

Lásd még