Erős nevű Assembly-k létrehozása és használata

Az erős név a csomag identitásából – az egyszerű szöveges nevéből, verziószámából és kulturális adataiból (ha rendelkezésre áll) – valamint egy publikus kulcsból és egy digitális aláírásból tevődik össze. Egy szerelvényfájlból készül a megfelelő titkos kulcs használatával. (A szerelvényfájl tartalmazza a szerelvényjegyzéket, amely tartalmazza a szerelvényt alkotó összes fájl nevét és kivonatát.)

Figyelmeztetés

A biztonság érdekében ne támaszkodjanak erős nevekre. Csak egyedi identitást biztosítanak.

Az erős nevű assembly csak más erős nevű assembly-k típusait használhatja. Ellenkező esetben az erős nevű összeállítás integritása sérülne.

Megjegyzés:

Bár a .NET Core támogatja az erős nevű assembly-ket, és a .NET Core könyvtár összes assembly-je aláírt, a harmadik fél által készített assembly-k többségére nincs szükség erős nevek. További információ: Erős névaláírás a GitHubon.

Erős névforgatókönyv

Az alábbi forgatókönyv egy erős névvel rendelkező szerelvény aláírásának folyamatát vázolja fel, majd később hivatkozik rá erre a névre.

  1. Az A összeállítás erős névvel kerül létrehozásra az alábbi módszerek egyikével:

    • Olyan fejlesztői környezet használata, amely támogatja az erős nevek, például a Visual Studio létrehozását.

    • Titkosítási kulcspár létrehozása az Erős név eszközzel (Sn.exe) és a kulcspár hozzárendelése a szerelvényhez parancssori fordítóval vagy a Assembly Linkerrel (Al.exe). A Windows SDK Sn.exe és Al.exeis biztosít.

  2. A fejlesztői környezet vagy eszköz aláírja a szerelvény jegyzékfájlját tartalmazó fájl kivonatát a fejlesztő titkos kulcsával. Ez a digitális aláírás a hordozható végrehajtható (PE) fájlban van tárolva, amely tartalmazza az Assembly A jegyzékfájlját.

  3. A B összeállítás az A összeállítás fogyasztója. A B összeállítás jegyzékfájljának referenciaszakasza tartalmaz egy tokent, amely az A összeállítás nyilvános kulcsát jelöli. A token egy része a teljes nyilvános kulcsnak, és a kulcs helyett azt használják a hely megtakarítása érdekében.

  4. A közös nyelvi futtatókörnyezet ellenőrzi az erős névazonosságot, amikor a szerelvényt a globális szerelvény-gyorsítótárba helyezik. Ha futásidőben erős névre történő kötés történik, a CLR összehasonlítja a B összeállítás jegyzékfájljában tárolt kulcsot az A összeállítás erős nevének létrehozásához használt kulccsal. Ha a .NET biztonsági ellenőrzései sikeresek, és a kötés is megfelelő, B összeállítás biztosítékot kap arra vonatkozóan, hogy A összeállítás bitei nem lettek manipulálva, és hogy ezek a bitek valóban az A összeállítás fejlesztőitől származnak.

Megjegyzés:

Ez a forgatókönyv nem foglalkozik a megbízhatósági problémákkal. Az összeállítások az erős név mellett a teljes Microsoft Authenticode-aláírásokat is tartalmazhatnak. Az authenticode-aláírások olyan tanúsítványt tartalmaznak, amely megbízhatóságot hoz létre. Fontos megjegyezni, hogy az erős nevek nem igénylik a kód ily módon történő aláírását. Az erős nevek csak egyedi identitást biztosítanak.

Megbízható összeállítások aláírás-ellenőrzésének megkerülése

A .NET-keretrendszer 3.5 Service Pack 1 csomagtól kezdve a rendszer nem ellenőrzi az erős nevű aláírásokat, amikor egy szerelvény betöltődik egy teljes megbízhatóságú alkalmazástartományba, például a MyComputer zóna alapértelmezett alkalmazástartományába. Ezt erős-név megkerülési funkcióként nevezik. Teljes megbízhatósági környezetben a StrongNameIdentityPermission követelmények mindig sikeresek az aláírt, teljes megbízhatóságú szerelvényeknél, függetlenül az aláírásuktól. Az erős név megkerülési funkció ebben a helyzetben elkerüli a teljes megbízhatóságú assembly-k erős névvel történő aláírásának ellenőrzését, lehetővé téve az assembly-k gyorsabb betöltését.

A megkerülési funkció minden olyan szerelvényre vonatkozik, amely erős névvel van aláírva, és amely a következő jellemzőkkel rendelkezik:

  • Teljes mértékben megbízható StrongName bizonyíték nélkül (például van MyComputer zóna bizonyítéka).

  • Teljes mértékben megbízható AppDomain betöltve.

  • Betöltve az ApplicationBase adott AppDomaintulajdonság alatti helyről.

  • Nincs késleltetett aláírás.

Ez a funkció letiltható egyes alkalmazásokban vagy számítógépeken. Lásd Az erős név megkerülési funkciójának kikapcsolása.

Cím Description
Útmutató: Nyilvános-privát kulcspár létrehozása Ismerteti, hogyan hozható létre titkosítási kulcspár egy szerelvény aláírásához.
Útmutató: Szerelvény aláírása erős névvel Egy erős nevű assembly létrehozásának módját ismerteti.
Továbbfejlesztett erős elnevezés A .NET-keretrendszer 4.5-ös erősneveinek továbbfejlesztéseit ismerteti.
Útmutató: Hivatkozás egy erős nevű assembly-re Ismerteti, hogyan hivatkozhat típusokra vagy erőforrásokra egy erős nevű összeállításban fordításkor vagy futtatókörnyezetben.
Útmutató: Az erős név megkerülés funkció letiltása Ismerteti, hogyan tilthatja le az erős névvel aláírt aláírások érvényesítését megkerülő funkciót. Ez a funkció le lehet tiltani az összes vagy egy adott alkalmazás esetében.
Szerelvények létrehozása Áttekintést nyújt az egy- és többfájlos assembly-kről.
Szerelvény aláírásának késleltetése a Visual Studióban Elmagyarázza, hogyan írhat alá egy erős nevű assemblyt a létrehozás után.
Sn.exe (Erős név eszköz) A .NET-keretrendszerben található eszközt ismerteti, amely segít erős névvel rendelkező szerelvények létrehozásában. Ez az eszköz lehetőséget biztosít a kulcskezelésre, az aláírások létrehozására és az aláírás ellenőrzésére.
Al.exe (Assembly Linker) A .NET-keretrendszerben található eszközt ismerteti, amely modulokból vagy erőforrásfájlokból szerelvényjegyzéket tartalmazó fájlt hoz létre.