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.