Sdílet prostřednictvím


Sn.exe (nástroj pro silný název)

Nástroj Silný název (Sn.exe) pomáhá podepisovat sestavení silnými názvy. Nástroj Sn.exe poskytuje možnosti pro správu klíčů, generování podpisů a ověřování podpisů.

Upozornění

Nespoléhejte na silné názvy zabezpečení. Poskytují pouze jedinečnou identitu.

Další informace o vytváření silných názvů a sestaveních se silným názvem naleznete v tématu Sestavení se silným názvem a Postupy: Podepsání sestavení silným názvem.

Nástroj Strong Name je automaticky nainstalován se sadou Visual Studio. Ke spuštění nástroje použijte Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell.

Poznámka

Na 64bitových počítačích spusťte 32bitovou verzi Sn.exe pomocí příkazového řádku Developer Command Prompt pro Visual Studio a 64bitové verze pomocí příkazového řádku Win64 v sadě Visual Studio x64.

V příkazovém řádku zadejte následující:

Syntaxe

sn [-quiet][option [parameter(s)]]

Parametry

Možnost Popis
-a identityKeyPairFile signaturePublicKeyFile Vygeneruje AssemblySignatureKeyAttribute data pro migraci klíče identity ze souboru do klíče podpisu.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Vygeneruje AssemblySignatureKeyAttribute data pro migraci klíče identity do klíče podpisu z kontejneru klíčů.
-c [csp] Nastaví výchozího zprostředkovatele kryptografických služeb (CSP) pro použití k podepisování se silným názvem. Toto nastavení platí pro celý počítač. Pokud název CSP nezadáte, nástroj Sn.exe vymaže aktuální nastavení.
-d container Odstraní zadaný kontejner klíče z CSP silného názvu.
-D assembly1 assembly2 Ověří, zda se dvě sestavení liší pouze v podpisu. Toto se často používá jako kontrola poté, co bylo sestavení znovu podepsáno jiným párem klíčů.
-e assembly outfile Extrahuje veřejný klíč ze sestavení a uloží ho do souboru outfile.
-h Zobrazí syntaxi příkazu a možnosti nástroje.
-i infile container Nainstaluje pár klíčů ze souboru infile v zadaném kontejneru klíčů. Kontejner klíčů je umístěn v CSP silného názvu.
-k [keysize] outfile Vygeneruje nový RSACryptoServiceProvider klíč zadané velikosti a zapíše ho do zadaného souboru. Do souboru je zapsán veřejný i soukromý klíč.

Nezadáte-li velikost klíče, je dle výchozího nastavení vygenerován 1024bitový klíč, pokud máte nainstalovaný vylepšený zprostředkovatel kryptografických služeb Microsoft. V opačném případě je vygenerován 512bitový klíč.

Parametr keysize podporuje délky klíčů od 384 bitů do 16 384 bitů v přírůstcích po 8 bitech, pokud máte nainstalovaného rozšířeného zprostředkovatele kryptografických služeb Od Microsoftu. Je-li nainstalován základní zprostředkovatel kryptografických služeb Microsoft, podporuje délky klíčů od 384 do 512 bitů v krocích po 8 bitech.
-m [y or n] Určí, zda jsou kontejnery klíčů specifické pro počítač nebo pro uživatele. Pokud zadáte y, kontejnery klíčů jsou specifické pro počítač. Pokud zadáte n, kontejnery klíčů jsou specifické pro uživatele.

Není-li zadána žádná z hodnot y nebo n, zobrazí tato možnost aktuální nastavení.
-o infile [outfile] Extrahuje veřejný klíč ze souboru infile a uloží ho do souboru .csv. Každý bajt veřejného klíče je oddělen čárkou. Tento formát je užitečný pro pevné zakódování odkazů na klíče jako inicializovaných polí ve zdrojovém kódu. Pokud nezadáte outfile, umístí tato možnost výstup do schránky. Poznámka: Tato možnost neověřuje, že vstup je pouze veřejným klíčem. Pokud obsahuje infile pár klíčů s privátním klíčem, extrahuje se také privátní klíč.
-p infile outfile [hashalg] Extrahuje veřejný klíč z páru klíčů v souboru infile a uloží ho do souboru outfile, volitelně pomocí algoritmu RSA určeného nástrojem hashalg. Tento veřejný klíč lze použít k odložení podepsání sestavení pomocí možností /delaysign+ a /keyfilelinkeru sestavení (Al.exe). Pokud je sestavení podepsáno opožděně, je v době kompilace nastaven pouze veřejný klíč a v souboru je vyhrazen prostor pro pozdější přidání podpisu, až bude znám soukromý klíč.
-pc container outfile [hashalg] Extrahuje veřejný klíč z páru klíčů v kontejneru a uloží ho do souboru outfile. Pokud použijete možnost hashalg , k extrakci veřejného klíče se použije algoritmus RSA.
-Pb [y or n] Určí, zda bude vynucena zásada potlačení silných názvů. Pokud zadáte y, silné názvy pro sestavení s úplným vztahem důvěryhodnosti nebudou při načtení do úplného vztahu důvěryhodnosti AppDomainověřeny . Pokud zadáte n, ověří se správnost silných názvů, ale ne konkrétní silný název. Nemá StrongNameIdentityPermission žádný vliv na sestavení s úplným vztahem důvěryhodnosti. Je zapotřebí provést vlastní kontrolu shody silných názvů.

Pokud nezadáte ani yn jedno nebo není zadáno, zobrazí tato možnost aktuální nastavení. Výchozí formát je y. Poznámka: V 64bitových počítačích musíte nastavit tento parametr v 32bitové i 64bitové instanci Sn.exe.
-q[uiet] Určuje použití tichého režimu; potlačí zobrazování zpráv o úspěchu.
-R[a] assembly infile Znovu podepíše dříve podepsané sestavení nebo sestavení podepsané se zpožděním pomocí páru klíčů v souboru infile.

Pokud se použije -Ra , hodnoty hash se přepočítají pro všechny soubory v sestavení.
-Rc[a] assembly container Znovu podepíše dříve podepsané sestavení nebo sestavení podepsané se zpožděním pomocí páru klíčů v kontejneru.

Pokud se použije -Rca , hodnoty hash se přepočítají pro všechny soubory v sestavení.
-Rh assembly Přepočítá hodnoty hash pro všechny soubory v sestavení.
-t[p] infile Zobrazí token pro veřejný klíč uložený v souboru infile. Obsah souboru infile musí být veřejný klíč, který se dříve vygeneroval ze souboru páru klíčů pomocí -p. Nepoužívejte možnost -t[p] k extrakci tokenu přímo ze souboru páru klíčů.

Nástroj Sn.exe počítá token z veřejného klíče pomocí funkce hash. Z důvodu šetření místem ukládá modul CLR tokeny veřejných klíčů do manifestů jako součást odkazů na jiné sestavení ve chvíli, kdy je do sestavení se silným názvem zaznamenána závislost. Možnost -tp zobrazí kromě tokenu také veřejný klíč. AssemblySignatureKeyAttribute Pokud byl atribut použit na sestavení, token je pro klíč identity a zobrazí se název hashovacího algoritmu a klíč identity.

Tato možnost neověřuje popis sestavení a neměla by být použita pro rozhodování o důvěryhodnosti. Tato možnost zobrazuje pouze nezpracovaná data tokenu veřejného klíče.
-T[p] assembly Zobrazí token veřejného klíče pro sestavení.Sestavení musí být název souboru, který obsahuje manifest sestavení.

Nástroj Sn.exe počítá token z veřejného klíče pomocí funkce hash. Z důvodu šetření místem ukládá modul runtime tokeny veřejných klíčů do manifestů jako součást odkazů na jiné sestavení ve chvíli, kdy je do sestavení se silným názvem zaznamenána závislost. Možnost -Tp zobrazí kromě tokenu také veřejný klíč. AssemblySignatureKeyAttribute Pokud byl atribut použit na sestavení, token je pro klíč identity a zobrazí se název hashovacího algoritmu a klíč identity.

Tato možnost neověřuje popis sestavení a neměla by být použita pro rozhodování o důvěryhodnosti. Tato možnost zobrazuje pouze nezpracovaná data tokenu veřejného klíče.
-TS assembly infile Test podepíše podepsané nebo částečně podepsané sestavení párem klíčů v souboru infile.
-TSc assembly container Test podepíše podepsané nebo částečně podepsané sestavení párem klíčů v kontejneru klíčů.
-v assembly Ověří silný název v sestavení, kde sestavení je název souboru, který obsahuje manifest sestavení.
-vf assembly Ověří silný název v sestavení. Na rozdíl od možnosti -v v vynutí -vf ověření i v případě, že je zakázané pomocí možnosti -Vr .
-Vk regfile.reg assembly [userlist] [infile] Vytvoří soubor registračních položek (.reg), které lze použít k registraci zadaného sestavení pro vynechání ověření. Pravidla pro pojmenování sestavení, která platí pro možnost -Vr , platí také pro –Vk . Informace o seznamu uživatelů a možnostech v souboru souborů najdete v části –Vr .
-Vl Vypíše aktuální nastavení pro ověřování silných názvů v tomto počítači.
-Vr assembly [userlist] [infile] Zaregistruje sestavení pro přeskočení ověření. Volitelně lze také zadat čárkou oddělený seznam uživatelských jmen, pro která by vynechání ověřování mělo platit. Pokud zadáte infile, ověřování zůstane povolené, ale veřejný klíč v souboru se použije při operacích ověření. Sestavení můžete zadat ve formátu *, strongname , aby se všechna sestavení registrovali se zadaným silným názvem. Pro strongname zadejte řetězec šestnáctkových číslic představujících tokenizovanou formu veřejného klíče. Token veřejného klíče zobrazíte pomocí možností -t a -T . Pozor: Tuto možnost použijte pouze během vývoje. Přidání sestavení na seznam pro přeskočení ověření vytvoří ohrožení zabezpečení. Škodlivé sestavení by mohlo použít plně zadaný název sestavení (název sestavení, verze, jazyková verze a token veřejného klíče), které je přidáno do seznamu pro přeskočení ověření, k falšování identity. To by také umožnilo škodlivému sestavení přeskočit ověření.
-Vu assembly Zruší registraci sestavení pro přeskočení ověření. Stejná pravidla pro pojmenování sestavení, která platí pro -Vr , platí pro -Vu.
-Vx Odstraní všechny záznamy o vynechání ověřování.
-? Zobrazí syntaxi příkazu a možnosti nástroje.

Poznámka

Všechny možnosti nástroje Sn.exe rozlišují velká a malá písmena a musí být pro rozpoznání nástrojem zapsána přesně dle tabulky.

Poznámky

Možnosti -R a -Rc jsou užitečné u sestavení, která byla podepsána se zpožděním. V tomto scénáři byl při kompilování nastaven pouze veřejný klíč a podepsání bylo provedeno později, až při znalosti soukromého klíče.

Poznámka

Pro parametry (například –Vr), které zapisují do chráněných prostředků, jako je registr, spusťte SN.exe jako správce.

Nástroj silného názvu předpokládá, že dvojice veřejného a privátního klíče jsou generovány s identifikátorem AT_SIGNATURE algoritmu. Páry veřejného a privátního klíče vygenerované algoritmem AT_KEYEXCHANGE vygenerují chybu.

Příklady

Následující příkaz vytvoří nový náhodný pár klíčů a uloží ho do keyPair.snk.

sn -k keyPair.snk

Následující příkaz uloží klíč do keyPair.snk kontejneru MyContainer se silným názvem CSP.

sn -i keyPair.snk MyContainer

Následující příkaz extrahuje veřejný klíč z keyPair.snk a uloží ho do publicKey.snk.

sn -p keyPair.snk publicKey.snk

Následující příkaz zobrazí veřejný klíč a token pro veřejný klíč obsažený v publicKey.snksouboru .

sn -tp publicKey.snk

Následující příkaz ověří sestavení MyAsm.dll.

sn -v MyAsm.dll

Následující příkaz odstraní MyContainer z výchozího poskytovatele CSP.

sn -d MyContainer

Viz také