HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Assembly aláírása a .NET parancssori eszközeivel


Példaprogram letöltése

5504 bájt

A .NET Framework számtalan parancssori eszközzel segíti a fejlesztők munkáját. A parancssori eszközök segítségével a legváltozatosabb műveleteket végezhetjük el, az assembly aláírástól a GAC-ban történő regisztrációig. Cikkünkben a signcode.exe és a chktrust.exe programok funkcióival, használatuk módjával ismerkedhetünk meg részletesen, és érintőlegesen bemutatásra kerül a cert2spc.exe segédprogram is.

A cikkben részletezzük a mellékelt példa mappájában megtalálható TestCert.cer tanúsítvány-állomány generálásának lépéseit. A tanúsítványt felhasználva ismerkedünk meg a bevezetőben említett segédprogramok működésével. A felhasznált segédprogramok mindegyike a <winroot>:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin mappában található a VS.NET telepítése után.
Tanúsítványgenerálás lépései
A Visual Studio.NET parancssori eszközéről, a MAKECERT.EXE alkalmazásról van szó, melynek használatát ismertetjük. Használatához az IDE saját parancssorát kell elindítanunk (elérési útvonala: <winroot>:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat).
Az alkalmazás segítségével tesztelési célra készíthetünk X509. szabvány szerinti tanúsítványokat. Az eszköz elkészít egy nyilvános kulcs - privát kulcs párt, melyeket egy tanúsítvány-állományban tárol. A létrehozott tanúsítványt hozzákapcsolja egy tanúsítvány kibocsátóhoz, valamint lehetővé teszi, hogy tetszőleges nevet rendeljünk a tanúsítványhoz.
Az alkalmazás általános szintaxisa a következő:
makecert [opciók] fájlnév
A fájlnév argumentumban kell megadnunk a tanúsítványt tároló állomány nevét, valamint igény szerint a létrehozás helyét. Az állomány kiterjesztése lehetőleg .CER legyen.
A program számtalan alapvető, és kiegészítő opcióval rendelkezik, a cikkben a legjellemzőbbeket ismertetjük.
Opciók Megjegyzés
-n X509név A tanúsítvány neve. A névnek X.500 szabvány szerintinek kell lenni, vagyis ”CN=név” formátumúnak.
-sk kulcsnév A kulcs konténer neve, melyben a privát kulcs megtalálható. Ha nincs megadva, létrehozásra kerül.
-sr hely A tanúsítvány (registry-ben történő) tárolási helyét specifikálhatjuk így. Értékei LOCALMACHINE vagy CURRENTUSER (alapértelmezett).
-ss tároló neve Tároló neve.
-# szám A tanúsítvány sorszáma, melyet alapértelmezésben a program generál.
-$ engedély A tanúsítvány típusát adhatjuk meg. Értékei lehetnek COMMERCIAL (kereskedelmi szoftverkibocsátók által használt) vagy INDIVIDUAL (egyedi szoftverkibocsátók által használt).
-? Kilistázza az alapvető opciókat.
-a aláírási algoritmus Az aláírás algoritmusa specifikálható. Értékei MD5 (alapértelmezett) vagy SHA1 lehetnek.
-b nn/hh/éééé Az érvényességi periódus kezdete. Alapesetben a kibocsátás időpontja.
-e nn/hh/éééé Az érvényesség lejárta. Alapértelmezésben 2039. 12. 31.
A tanúsítvány neve (nem az állománynév) VSCert lesz. A létrehozáshoz indítsuk el a Visual Studio.NET parancssort, majd gépeljük be a következő sort:
makecert –sk mycert –ss root –n CN=VSCert <elérési útvonal>TestCert.cer
Mivel nem specifikáltuk, hogy mely tárolóban helyezze el a program a tanúsítványunkat, megjelenik egy üzenetpanel, mely rákérdez, hogy elhelyezheti a tanúsítványt ROOT tárolóban.


A panelen többek között szerepel a tanúsítvány sorszáma, mellyel tárolásra kerül a Rendszerleíró adatbázis következő kulcsában:
HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root\Certificates\0D7798EFBF66E3019E15B2D4F9C1936D6815A382
Látható, hogy a tanúsítvány az alapértelmezett tárolóba került (currentuser).
Annak érdekében, hogy a tanúsítvány használható legyen, telepítenünk kell a rendszerben. Ennek érdekében az elindított VS parancssorba gépeljük be a certmgr parancsot, melynek eredményeképpen elindul a .NET Framework Certification Manager segédprogramja. A segédprogramban egy táblázatcsoportot találunk, melynek fülei segítségével kereshetjük ki a „Megbízható gyártók” feliratú táblázatot. Most még nem található benne a VSCert tanúsítvány.


A telepítéshez a panel „Importálás” feliratú nyomógombjára kell kattintanunk, majd a „Tanúsítványimportáló varázsló” ablakban meg kell adni a TestCert.cer állomány elérési útját.


A művelet végén a VSCert tanúsítvány megjelenik a fenti táblázatban.
A tanúsítvány ezennel kész, telepítve van. Most már csak fel kell használnunk a segédprogramokban.


CERT2SPC.EXE segédprogram
A segédprogram hivatalos neve Software Publisher Certificate Test Tool, melynek segítségével egy úgynevezett Software Publisher's Certificate-et (szabadon fordítva Szoftvergyártói Tanúsítvány) készíthetünk a meglévő, vagy tesztelési célra generált tanúsítványból. A generált kimenet egy .SPC kiterjesztésű állomány, mely egy vagy több tanúsítvány felhasználásával készíthető tesztelési célra.
A program használatának szintaxisa a következő:
Cert2spc tanúsítvány(1) [...tanúsítvány(n)] állománynév.spc
A használandó argumentumok a következők:
Argumentumok Megjegyzés
Tanúsítvány(1…n) A felhasznált tanúsítvány(ok).
Kimenet.spc A generált SPC állomány.
/? Megjeleníthetjük a segédprogram használatának módját.
A saját tanúsítványunkhoz is generálhatunk SPC tanúsítványt a következőképpen:
Cert2spc <elérési út>TestCert.cer <elérési út>TestSPC.spc
A keletkezett állományon kétszer kattintva megjeleníthetünk egy dialógusablakot, melyben megtekinthetjük, hogy az SPC milyen tanúsítványokból lett létrehozva.


SIGNCODE.EXE segédprogram
A segédprogram segítségével lehetőségünk van egy assembly-t aláírni Authenticode digitális aláírással. Az assembly tárolódhat egy DLL-ben, vagy egy EXE állományban. A SIGNCODE.EXE segédprogram számtalan parancssori argumentummal rendelkezik, melyek közül a gyakrabban használtakat most felsoroljuk. A mennyiben a programot opciók nélkül indítjuk el, úgy egy grafikus felülettel találkozhatunk, mely varázslóként végigvezet minket az aláírás menetén.
A program használatának általános szintaxisa a következő:
signcode [opciók] aláírandó fájl neve
Argumentumok Megjegyzés
-a algoritmus Megadható a HASH titkosítási algoritmus neve, mely MD5, vagy SHA1 kell legyen. Az alapértelmezett az MD5.
-c fájlnév Megadható annak a fájlnak a neve, mely tartalmazza a kódolt SPC-t.
-cn név Megadható az általános neve a tanúsítványnak (példánkban VSCert).
-i információ Specifikálható, hogy maradjon hely kiegészítő információk elhelyezéséhez (például egy URL számára).
-p provider Megadható a titkosításszolgáltató (Cryptographic Provider) neve.
-r hely Megadható, hogy hol helyezkedjen el a tanúsítvány a Rendszerleíró adatbázisban. A lehetséges értékek: CURRENTUSER (alapértelmezett), LOCALMACHINE.
-s tároló Megadható a tároló, ahol a tanúsítvány tárolódjon. Az alapértelmezett tároló a MY.
-spc fájlnév Az SPC állomány neve, mely tartalmazza a SPC tanúsítványt.
-t URL Az időbélyeggel ellátandó assembly esetében megadható, hogy egy „Time Server” szolgáltassa az időbélyeget. Ennek HTTP címe adható meg itt.
-v privátkulcs neve Megadható egy privát kulcsot tartalmazó állomány neve is (.PVK).
-x Az assembly időbélyeggel lesz ellátva, de nem lesz aláírva.
-y titkosítási szolgáltató neve A Cryptographic Provider típusa adható meg.
-? Segítség megjelenítése.
A mellékelt példában a fent generált és telepített TestCert.cer állomány felhasználásával fogjuk aláírni a STLibrary.dll állományt. A regisztrált tanúsítvány neve tehát VSCert, melyet a következőképpen használunk a SIGNCODE.EXE programban, hogy az aláírást létrehozzuk:
Signcode –cn VSCert –s root <elérési út>STLibrary.dll
A –s kapcsolóval megadtuk, hogy a tanúsítvány a ROOT tárolóban van. Ennek elhagyásával a program a MY tárolóban keresi azt, és mivel a tanúsítvány ott nem található, a művelet kisiklik.
CHKTRUST.EXE segédprogram
A program segítségével ellenőrizhetjük a fent létrehozott aláírást. A program használatának általános szintaxisa a következő:
chktrust [/q] [/v] aláírt állomány neve
A programot két opcióval használhatjuk, melyek jelentését a következő táblázat foglalja össze.
Opciók Megjegyzés
/q Amennyiben nem tartalmaz aláírást az assembly, akkor sem jelenít meg információkat ezzel kapcsolatban.
/v Részletes információkat jelenít meg az aláírás kibocsátójáról, amennyiben az assembly tartalmaz aláírást.
A STLibrary.dll assembly ellenőrzése példánk esetében a következő szintaxissal történik.
Chktrust STLibrary.dll
A parancsvégrehajtás után a következő üzenet jelenik meg a konzolon, ha végrehajtottuk a korábbi aláírási procedúrát: <elérési út>STLibrary.dll: Succeeded.
Abban az esetben, ha a DLL nincs aláírva, és nem használtuk a /q argumentumot, akkor egy dialógusablak jelenik meg, mely figyelmeztet arra, hogy az assembly nem tartalmaz aláírást.
A panelen az Igen gombra kattintva elérhető, hogy a DLL-t ettől függetlenül használhassuk.



Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 711. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |