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