C# - A SECUTIL.EXE parancssori segédprogram jellemzői

forráskód letöltése
A .NET Framework segédprogramjai közül jelenlegi cikkünkben a SECUTIL.EXE alkalmazást vesszük górcső alá. Bemutatjuk a segédprogram jellemzőit, használatának lehetőségeit. Mint a parancssori alkalmazások többsége, a SECUTIL.EXE is rendelkezik parancssori argumentumokkal, opciókkal, melyeket a cikkben feltárunk. A cikk végére kiderül, hogyan lehet a segédprogram segítségével információkat nyerni az aláírt assembly-ből.
A segédprogram a <winroot>:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin mappában található a VS.NET telepítése után. A mellékelt példa mappájában elhelyeztünk egy TestCert.cer nevű tanúsítvány-állományt. A tanúsítvány telepítése után aláírjuk vele a generált GetCertInfo.exe assembly-t. A segédprogram ezt követően próbálható ki.
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 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.
Assembly aláírása
A SIGNCODE.EXE alkalmazás segítségével tudjuk az assembly-t aláírni. A tanúsítvány nevének felhasználásával a következőképpen írhatjuk alá a GetCertInfo.exe állományt:
Signcode –cn VSCert –s root <elérési út>GetCertInfo.exe
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.

SECUTIL.EXE segédalkalmazás
A segédprogram segítségével információkat kérdezhetünk le az aláírt assembly-ből. Az információk lehetnek Strong Name, vagy Public Key információk. Amennyiben az aláírás az SN.EXE segédprogram által generált .snk állománnyal történik, akkor a Strong Name információkat kaphatjuk meg, ha viszont a MAKECERT.EXE program által generált .cer állománnyal (X509-típusú aláírás) történt az aláírás, akkor a Public Key információk kérdezhetők le. A program használatának általános szintaxisa a következő:
secutil [opciók] fájl neve
A használható opciók listáját a következő táblázatban foglaltuk össze.
Opciók Megjegyzés
-a Amennyiben a –strongname opcióval együtt használjuk, akkor a strong name információkat kaphatjuk meg egy bájttömbben, valamint az assembly nevét és verziószámát. Az –x opcióval együtt viszont a Public Key információk kérdezhetők le.
-c Visszaadja azokat az információkat, mint az –a opció, csak nem egy bájttömbben.
-hex Az –a opcióval megegyező típusú adathalmazt eredményez, csak a bájttömb helyett hexadecimális formátumban.
-s Csak a strong name információt, az assembly nevét és verziószámát adja vissza. A formátum C#-kompatibilis.
-v[bmode] Az –a opcióval azonos eredményre vezet, de a bájttömb a Visual Basic nyelvvel mutat kompatibilitást.
-x Csak az X509 szabvánnyal hitelesített aláírással kapcsolatos információkat adja vissza egy C#-kompatibilis bájttömbe.
-h vagy -? Megjeleníti az opciók listáját.
A példaprogram által generált GetCertInfo.exe állományból a következő parancssorral tudunk információkat lekérdezni.
Secutil.exe –x <elérési út>GetCertInfo.exe > <elérési út>X509Cert.txt
A paranccsal egy X509cert.txt állományba mentettük az aláírt assembly X509 szabvány szerinti aláírásához kapcsolódó kulcsinformációkat. Az eredmény-bájttömb a következőképpen fest:
X.509 Certificate = { 48, 130, 1,...}