Megosztott szerelvények Krizsán n Zoltán
Privát vs Megosztott szerelvények Privát t szerelvény: telepítés, ha a szerelvény bárhovb rhová felmásoljuk, a használó másik szerelvény mellé,, ilyenkor más m szerelvények nem érik el. Nem kell regisztry-t, ini fájlokat módosm dosítani Megosztott (publikus( publikus,, globális) lis) szerelvény: A rendszeren, és s a hálózaton h levő összes szerelvény használhatja, központi k helyen kell legyen..net Framework Class Library (FCL) 2
Erős gyenge nevű szerelvény Ugyanaz a felépítés s (csak privát t lehet): PE CLR fej metadata... Azonban erős s név n v (privát és s globális lis is lehet): készítő privát t / publikus kulcsa jelöli, li, ezért: egyedi biztonságos verzionált bárhová telepíthet thető (akár r a hálózaton h is) 3
Probléma Legyen Legyen Asm egy legalább 2 szerelvény által használt szerelvény, benne típusok. t Két t különbk nböző cég g implementálja lja ugyanazokat a típusokat. t Telepítés s régi r módszerrel: m Egyikkel felülírjuk a másikat m (dll( hell)! Fájlnevek különbsk nbsége sem elég! Megoldás s az erős s név! n 4
Erős s név n v tartalma fájlnév v (kiterjesztés s nélkn lkül) l) verziószám m (x.y.v.z( alakú) kultúra azonosító (nyelvi + területi azonosítás, s, neutral=nincs) publikuspublikus kulcs token (publikus kulcsból ered) Pl.: mscorlib,, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 5
Publikus privát t kulcsú titkosítás 2 2 cég c -> > 2 különbk nböző titkos/nyilvános nos kulcspár -> > különbk nböző erős s névn Lehetne Lehetne GUIID alapú is, titkosítás alkalmazásával lehet a szerelvény sértetlenségét, t, is biztosítani! tani! 6
Erős s nevű szerelvény létrehozl trehozása Erős s név n v generáltat ltatása: SN.exe k sajat.kulcs (Strong Name Utility). Létrehoz egy fájlt, f amiben saját t (128 byte) / nyilvános nos (438 byte) kulcs tárolt rolódik. (Paraméterei kis-,, nagybetű érzékenyek) Megfelelő attribútum tum beáll llítása. pl.: AssemblyInfo.cs fájlba [assembly: AssemblyKeyFile( sajat.kulcs sajat.kulcs )] vagy al.exe /keyfile kapcsoloval 7
Erős s nevű szerelvény létrehozl trehozása II Ezek Ezek után n a fordító megjelöli li a saját t kulccsal a szerelvényt. Beilleszti Beilleszti a nyilvános nos kulcsot a manifest-be Már r amelyiknek van manifestje. (Emlékezz kezzünk több modul esetén, csak egynek van) 8
Digitális jelölés s I A A szerelvény metadata FileDef táblája tartalmazza a fájlok f listáját, t, és s az egyes fájlok nevét és s ujjlenyomatát. t. Újlenyomat = hash összeg. (Alapértelmezett a SHA-1, de felülb lbírálható) 9
Megosztott szerelvények METADATA Manifest PE fej Publikus kulcs IL kód Hash algoritmus Hash érték privát kulcs CLR fej RSE digitális aláírás 10
Digitális aláí áírás s szerepe Biztosít t a szerelvény hiteleségéről, l, származ rmazásáról A A szerelvény betölt ltése előtt mindig ellenőrzi, így biztosítja tja a szerelvény sértetlenss rtetlenségét. t. Ha valaki módosm dosítja a szerelvény tartalmát, t, akkor újlenyomatok változnak! v 11
Telepítés Ha mindenki elérheti, akkor egy központi k (CLR által ismert) helyre kell telepíteni, teni, ahol a CLR keresi, ha hivatkozás s van. Global Assembly Cache (GAC) Helye: %windir% windir%\assembly\gac Jegyzékeket tartalmaz. Tilos kézzel k bemásolni a szerelvényt! Használjunk eszközöket, ket, amelyek létrehozzl trehozzák, és bemásolj solják k a szerelvény(eke)t. 12
Gacutil.exe telepítő alkalmazás Csak Csak az adminisztrátor tor tagjai használhatj lhatják. /l szerelveny kiírja a szerelvény adatait, ha nincs paraméter, akkor mindet /i telepíti ti a szerelvényt /if ha már m r telepítve tve volt, akkor felülírja Ha nincs a szerelvénynek erős s neve, akkor hibajelzést kapunk! /u törli a szerelvényt a rendszerből 13
Windows explorer 14
Ha minden stimmel, akkor... Internet Internet explorer-el el (nem total commander) egyszerűen en behúzzuk drag and drop,, ha az telepíthet thető,, akkor telepíti. ti. Ilyenkor Ilyenkor telepíti, ti, nem bemásolja! 15
GAC belső struktúrája Az adott helyen jegyzék k a szerelvény neve. Benne Benne jegyzékek, melyek alakja: (verzió_kultúra_publikuskulcstoken,, ha a kultúra neutral,, akkor nincs) pl.: 0.0.0.0 378dfefaa4be9a09 16
Szerelvények használata Fordításkor: csc /reference szerelvény_n ny_név Hol keresi: munkakönyvt nyvtárban ahol a CLR van amit megadunk a fordítónak /lib/ LIB környezeti k változv ltozó 17
Késleltetett (delayed( delayed), részleges r (partial)) jelölés A A saját t kulcs titkossága nagyon fontos, vigyázzunk rá! r Nagyobb Nagyobb cégek c (pl. Microsoft) nem adja ki minden alkalmazottnak, de fejleszteni kell! Megoldás: fejlesztés s alatt csak a publikus kulcsot használjuk. 18
Késleltetett jelölés s használata 1. Egyszer létrehozzuk l a saját/nyilv t/nyilvános nos kulcspárt tartalmazó fájlt sn.exe k sajat.kulcs 2. Kiszedjük k a nyilvános nos kulcsot a pub.kulcs-ba ba sn.exe p sajat.kulcs pub.kulcs 3. Majd megadjuk a megfelelő attribútumot tumot AssemblyDelaySign(true) ) vagy az al.exe /delay 19
Késleltetett jelölés s használata II Lefordítjuk a szerelvény Nem telepítj tjük k a Gacutil.exe-vel (vagy a drag n drop), hanem sn.exe Vr szerelveny.dll [felhasználó lista] regisztrálja, ellenőrz rzés s kiiktatjuk. Végül, miután n elkész szült a végleges v verzió,, jelölj ljük (hitelesíts tsük) a saját t kulccsal: sn.exe R szerelveny.dll sajat.kulcs Visszaáll llítjuk az ellenőrz rzést: sn.exe Vu szerelvény.dll 20