1 / 20

Megosztott szerelvények

Megosztott szerelvények. Krizsán Zoltán 1.0. Privát vs Megosztott szerelvények. Privát szerelvény: telepítés, ha a szerelvény bárhová felmásoljuk, a használó másik szerelvény mellé, ilyenkor más szerelvények nem érik el. Nem kell regisztry-t, ini fájlokat módosítani

Download Presentation

Megosztott szerelvények

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Megosztott szerelvények Krizsán Zoltán 1.0

  2. Privát vs Megosztott szerelvények • Privát szerelvény: • telepítés, ha a szerelvény bárhová felmásoljuk, a használó másik szerelvény mellé, ilyenkor más szerelvények nem érik el. • Nem kell regisztry-t, ini fájlokat módosítani • Megosztott (publikus, globális) szerelvény: • A rendszeren, és a hálózaton levő összes szerelvény használhatja, központi helyen kell legyen. • .NET Framework Class Library (FCL)

  3. Erős – gyenge nevű szerelvény • Ugyanaz a felépítés (csak privát lehet): • PE • CLR fej • metadata • ... • Azonban erős név (privát és globális is lehet): készítő privát / publikus kulcsa jelöli, ezért: • egyedi • biztonságos • verzionált • bárhová telepíthető (akár a hálózaton is)

  4. Probléma • Legyen Asm egy legalább 2 szerelvény által használt szerelvény, benne típusok. • Két különböző cég implementálja ugyanazokat a típusokat. • Telepítés régi módszerrel:Egyikkel felülírjuk a másikat (dll hell)!Fájlnevek különbsége sem elég! • Megoldás az erős név!

  5. Erős név tartalma • fájlnév (kiterjesztés nélkül) • verziószám (x.y.v.z alakú) • kultúra azonosító (nyelvi + területi azonosítás, neutral=nincs) • publikus kulcs token (publikus kulcsból ered) Pl.: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

  6. Publikus privát kulcsú titkosítás • 2 cég -> 2 különböző titkos/nyilvános kulcspár -> különböző erős név • Lehetne GUIID alapú is, titkosítás alkalmazásával lehet a szerelvény sértetlenségét, is biztosítani!

  7. Erős nevű szerelvény létrehozása • Erős név generáltatása:SN.exe –k sajat.kulcs (Strong Name Utility). Létrehoz egy fájlt, amiben saját (128 byte) / nyilvános (438 byte) kulcs tárolódik.(Paraméterei kis-, nagybetű érzékenyek) • Megfelelő attribútum beállítása.pl.: AssemblyInfo.cs fájlba[assembly: AssemblyKeyFile(”sajat.kulcs”)]vagyal.exe /keyfile kapcsoloval

  8. Erős nevű szerelvény létrehozása II • Ezek után a fordító megjelöli a saját kulccsal a szerelvényt. • Beilleszti a nyilvános kulcsot a manifest-beMár amelyiknek van manifestje.(Emlékezzünk – több modul esetén, csak egynek van)

  9. Digitális jelölés I • A szerelvény metadata FileDef táblája tartalmazza a fájlok listáját, és az egyes fájlok nevét és ujjlenyomatát. Újlenyomat = hash összeg. (Alapértelmezett a SHA-1, de felülbírálható)

  10. PE fej METADATA Manifest Publikus kulcs Hash algoritmus IL kód CLR fej Megosztott szerelvények Hash érték privát kulcs RSE digitális aláírás

  11. Digitális aláírás szerepe • Biztosít a szerelvény hiteleségéről, származásáról • A szerelvény betöltése előtt mindig ellenőrzi, így biztosítja a szerelvény sértetlenségét.Ha valaki módosítja a szerelvény tartalmát, akkor újlenyomatok változnak!

  12. Telepítés • Ha mindenki elérheti, akkor egy központi (CLR által ismert) helyre kell telepíteni, ahol a CLR keresi, ha hivatkozás van. • Global Assembly Cache (GAC) • Helye: %windir%\Assembly\GAC • Jegyzékeket tartalmaz.Tilos kézzel bemásolni a szerelvényt!Használjunk eszközöket, amelyek létrehozzák, és bemásolják a szerelvény(eke)t.

  13. Gacutil.exe – telepítő alkalmazás • Csak az adminisztrátor tagjai használhatják. • /l szerelvény – kiírja a szerelvény adatait, ha nincs paraméter, akkor mindet • /i – telepíti a szerelvényt/if – ha már telepítve volt, akkor felülírjaHa nincs a szerelvénynek erős neve, akkor hibajelzést kapunk! • /u – törli a szerelvényt a rendszerből

  14. Windows explorer

  15. Ha minden stimmel, akkor ... • Internet explorer-el (nem total commander) egyszerűen behúzzuk drag and drop, ha az telepíthető, akkor telepíti. • Ilyenkor telepíti, nem bemásolja!

  16. GAC belső struktúrája • Az adott helyen jegyzék a szerelvény neve. • Benne jegyzékek, melyek alakja:(verzió_kultúra_publikusKulcsToken, ha a kultúra neutral, akkor nincs)pl.: 0.0.0.0__378dfefaa4be9a09

  17. Szerelvények használata • Fordításkor: csc /reference szerelvény_névHol keresi: • munkakönyvtárban • ahol a CLR van • amit megadunk a fordítónak /lib • LIB környezeti változó

  18. Késleltetett (delayed), részleges (partial) jelölés • A saját kulcs titkossága nagyon fontos, vigyázzunk rá! • Nagyobb cégek (pl. Microsoft) nem adja ki minden alkalmazottnak, de fejleszteni kell! • Megoldás: fejlesztés alatt csak a publikus kulcsot használjuk.

  19. Késleltetett jelölés használata • Egyszer létrehozzuk a saját/nyilvános kulcspárt tartalmazó fájlt sn.exe –k sajat.kulcs • Kiszedjük a nyilvános kulcsot a pub.kulcs-basn.exe –p sajat.kulcs pub.kulcs • Majd megadjuk a megfelelő attribútumotAssemblyDelaySign(true) vagyaz al.exe /delay

  20. Késleltetett jelölés használata II • Lefordítjuk a szerelvény • Nem telepítjük a Gacutil.exe-vel (vagy a drag n’ drop), hanem sn.exe –Vr szerelveny.dll [felhasználó lista]regisztrálja, ellenőrzés kiiktatjuk. • Végül, miután elkészült a végleges verzió, jelöljük (hitelesítsük) a saját kulccsal:sn.exe –R szerelveny.dll sajat.kulcs • Visszaállítjuk az ellenőrzést:sn.exe –Vu szerelvény.dll

More Related