Megosztott szerelvények

20
Megosztott Megosztott szerelvények szerelvények Krizsán Zoltán Krizsán Zoltán 1.0 1.0

description

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 - PowerPoint PPT Presentation

Transcript of Megosztott szerelvények

Page 1: Megosztott szerelvények

Megosztott Megosztott szerelvényekszerelvények

Krizsán ZoltánKrizsán Zoltán

1.01.0

Page 2: Megosztott szerelvények

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)

Page 3: Megosztott szerelvények

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)

Page 4: Megosztott szerelvények

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!

Page 5: Megosztott szerelvények

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

Page 6: Megosztott szerelvények

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!

Page 7: Megosztott szerelvények

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

Page 8: Megosztott szerelvények

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)

Page 9: Megosztott szerelvények

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ó)

Page 10: Megosztott szerelvények

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

Page 11: Megosztott szerelvények

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!

Page 12: Megosztott szerelvények

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.

Page 13: Megosztott szerelvények

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

Page 14: Megosztott szerelvények

14

Windows explorerWindows explorer

Page 15: Megosztott szerelvények

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!

Page 16: Megosztott szerelvények

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

Page 17: Megosztott szerelvények

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ó

Page 18: Megosztott szerelvények

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.

Page 19: Megosztott szerelvények

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

Page 20: Megosztott szerelvények

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