C# - Assembly aláírásának ellenőrzése Intézőből

forráskód letöltése
A CHKTRUST.EXE és a SIGNCODE.EXE alkalmazások a .NET Framework parancssori segédprogramjai, melyek segítségével ellenőrizhetjük, hogy az adott assembly rendelkezik-e digitális aláírással vagy sem. Amennyiben nem, úgy a SIGNCODE.EXE alkalmazással alá is írhatjuk azt. A programok használatához szükségünk van a parancssor indítására és a megfelelő állománynevek, paraméterek manuális begépelésére. Cikkünkben bemutatunk egy példát arra, hogy miként végezhetjük el az ellenőrzést, vagy az aláírást az Intéző gyorsmenüjéből.
A mellékelt AddEntries.reg állomány lefuttatása után és a menüpontok használata előtt telepítenünk kell a mellékelt TestCert.cer állományban található X509. szabványú tanúsítványt. Ennek elvégzéséhez olvassa el a cikk „Tanúsítvány telepítése” című szakaszát.
Annak érdekében, hogy a létrehozott gyorsmenüket használhassuk, gondoskodnunk kell arról, hogy egy VSCert nevű tanúsítvány legyen megtalálható a rendszerben, melyet a SIGNCODE.EXE alkalmazás használhat. A telepítés után a mellékelt példaprojekt által generált DLL-en ki is próbálhatja a műveleteket.
Tanúsítvány telepítése
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.NET 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.
„Aláírás ellenőrzése” menüpont létrehozása
A megoldás lényege, hogy a Rendszerleíró adatbázis HKEY_CLASSES_ROOT\dllfile és a HKEY_CLASSES_ROOT\exefile kulcsa alatt létrehozzuk a megfelelő bejegyzéseket, melynek eredményeképpen a megadott feliratú menüpontok megjelenhetnek az Intéző gyorsmenüjében.
A két kulcs alatt azonos bejegyzéseket hozunk létre, így az egyszerűség kedvéért csak az egyiket ecseteljük. Az aláírás ellenőrzését lehetővé tevő menüpont felirata a következő bejegyzés segítségével jeleníthető meg:
[HKEY_CLASSES_ROOT\dllfile\Shell\Install]
@="Aláírás ellenőrzése"
A bejegyzés a Shell\Install kulcsba kerül. Az aláírás ellenőrzése a CHKTRUST.EXE alkalmazás segítségével történik, így a következő kulcsot kell elhelyezni a főkulcs alá:
[HKEY_CLASSES_ROOT\dllfile\Shell\Install\Command]
@="\"C:\\Program Files\\Microsoft Visual Studio .NET\\FrameworkSDK\\Bin\\chktrust.exe\" \"%1\""
Ekkor a DLL, vagy EXE állomány gyorsmenüjében megjelenik az „Aláírás ellenőrzése” menüpont, melyre kattintva lefut a megfelelő parancs.
Amennyiben az assembly nincs aláírva, 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.
„Assembly aláírása” menüpont létrehozása
Ebben a megoldásban a Rendszerleíró adatbázis HKEY_CLASSES_ROOT\dllfile és a HKEY_CLASSES_ROOT\exefile kulcsa alatt, az Uninstall\Command alkulcsban helyezzük el az utasítást, melynek eredményeképpen az assembly aláírást tartalmaz.
A felirat megjelenítésének bejegyzése a következő:
[HKEY_CLASSES_ROOT\dllfile\Shell\Uninstall]
@="Assembly aláírása"
A SIGNCODE.EXE alkalmazás megfelelő paraméterekkel történő futtatását pedig a következő bejegyzéssel biztosíthatjuk.
[HKEY_CLASSES_ROOT\dllfile\Shell\Uninstall\Command]
@="\"C:\\Program Files\\Microsoft Visual Studio .NET\\FrameworkSDK\\Bin\\signcode.exe\" /cn VSCert /s root \"%1\""
A RemoveEntries.reg állomány lefuttatásával törölheti a létrehozott bejegyzéseket a Rendszerleíró adatbázisból.