Udostępnij przez


Sn.exe (narzędzie silnej nazwy)

Narzędzie Strong Name (Sn.exe) ułatwia podpisywanie zestawów przy użyciu silnych nazw. Sn.exe udostępnia opcje zarządzania kluczami, generowania podpisów i weryfikacji podpisu.

Ostrzeżenie

Nie należy polegać na silnych nazwach zabezpieczeń. Zapewniają one tylko unikatową tożsamość.

Aby uzyskać więcej informacji na temat silnych nazewnictwa i zestawów o silnych nazwach, zobacz Strong-Named Zestawy i Instrukcje: podpisywanie zestawu za pomocą silnej nazwy.

Narzędzie Strong Name jest automatycznie instalowane w programie Visual Studio. Aby uruchomić narzędzie, użyj wiersza polecenia dla deweloperów programu Visual Studio lub programu Visual Studio Developer PowerShell.

Uwaga / Notatka

Na komputerach 64-bitowych uruchom 32-bitową wersję Sn.exe przy użyciu wiersza polecenia dewelopera dla programu Visual Studio i 64-bitowej wersji przy użyciu wiersza polecenia programu Visual Studio x64 Win64.

W wierszu polecenia wpisz następujące polecenie:

Składnia

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

Parametry

Option Description
-a identityKeyPairFile signaturePublicKeyFile AssemblySignatureKeyAttribute Generuje dane w celu przeprowadzenia migracji klucza tożsamości do klucza podpisu z pliku.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile AssemblySignatureKeyAttribute Generuje dane w celu przeprowadzenia migracji klucza tożsamości do klucza podpisu z kontenera kluczy.
-c [csp] Ustawia domyślnego dostawcę usług kryptograficznych (CSP), który ma być używany do podpisywania silnej nazwy. To ustawienie dotyczy całego komputera. Jeśli nie określisz nazwy dostawcy CSP, Sn.exe wyczyści bieżące ustawienie.
-d container Usuwa określony kontener kluczy z dostawcy CSP o silnej nazwie.
-D assembly1 assembly2 Sprawdza, czy dwa zestawy różnią się tylko podpisem. Jest to często używane jako sprawdzanie po ponownym podpisaniu zestawu za pomocą innej pary kluczy.
-e assembly outfile Wyodrębnia klucz publiczny z zestawu i przechowuje go w pliku outfile.
-h Wyświetla składnię poleceń i opcje narzędzia.
-i infile container Instaluje parę kluczy z pliku infile w określonym kontenerze kluczy. Kontener kluczy znajduje się w dostawcy CSP o silnej nazwie.
-k [keysize] outfile Generuje nowy RSACryptoServiceProvider klucz o określonym rozmiarze i zapisuje go w określonym pliku. Zarówno klucz publiczny, jak i prywatny są zapisywane w pliku.

Jeśli nie określisz rozmiaru klucza, domyślnie jest generowany klucz 1024-bitowy, jeśli masz zainstalowanego rozszerzonego dostawcę kryptograficznego firmy Microsoft; w przeciwnym razie jest generowany klucz 512-bitowy.

Parametr keysize obsługuje długości kluczy z 384 bitów do 16 384 bitów w przyrostach 8 bitów, jeśli masz zainstalowanego rozszerzonego dostawcę kryptograficznego firmy Microsoft. Obsługuje długości kluczy z 384 bitów do 512 bitów w przyrostach 8 bitów, jeśli masz zainstalowanego podstawowego dostawcę kryptograficznego firmy Microsoft.
-m [y or n] Określa, czy kontenery kluczy są specyficzne dla komputera, czy specyficzne dla użytkownika. W przypadku określenia wartości y kontenery kluczy są specyficzne dla komputera. Jeśli określisz n, kontenery kluczy są specyficzne dla użytkownika.

Jeśli nie określono wartości y ani n, ta opcja wyświetla bieżące ustawienie.
-o infile [outfile] Wyodrębnia klucz publiczny z pliku infile i przechowuje go w pliku .csv. Przecinek oddziela każdy bajt klucza publicznego. Ten format jest przydatny w przypadku odwoływania się do kluczy jako zainicjowanych tablic w kodzie źródłowym. Jeśli nie określisz pliku outfile, ta opcja umieszcza dane wyjściowe w Schowku. Nuta: Ta opcja nie sprawdza, czy dane wejściowe są tylko kluczem publicznym. infile Jeśli element zawiera parę kluczy z kluczem prywatnym, wyodrębniony jest również klucz prywatny.
-p infile outfile [hashalg] Wyodrębnia klucz publiczny z pary kluczy w pliku infile i przechowuje go w pliku outfile, opcjonalnie przy użyciu algorytmu RSA określonego przez hashalg. Ten klucz publiczny może służyć do opóźniania podpisywania zestawu przy użyciu /delaysign+ i /keyfile opcji konsolidatora zestawów (Al.exe). Gdy zestaw jest podpisany z opóźnieniem, tylko klucz publiczny jest ustawiany w czasie kompilacji, a przestrzeń jest zarezerwowana w pliku, aby podpis został dodany później, gdy jest znany klucz prywatny.
-pc container outfile [hashalg] Wyodrębnia klucz publiczny z pary kluczy w kontenerze i przechowuje go w pliku outfile. Jeśli używasz opcji hashalg , algorytm RSA jest używany do wyodrębniania klucza publicznego.
-Pb [y or n] Określa, czy zasady obejścia silnej nazwy są wymuszane. Jeśli określisz wartość y, silne nazwy zestawów o pełnym zaufaniu nie są weryfikowane podczas ładowania do pełnego zaufania AppDomain. Jeśli określisz n, silne nazwy są weryfikowane pod kątem poprawności, ale nie dla określonej silnej nazwy. Element StrongNameIdentityPermission nie ma wpływu na zestawy o pełnym zaufaniu. Musisz wykonać własne sprawdzanie dopasowania silnej nazwy.

Jeśli ani nie yn zostanie określona, ta opcja wyświetli bieżące ustawienie. Wartość domyślna to y. Nuta: Na komputerach 64-bitowych należy ustawić ten parametr zarówno w 32-bitowych, jak i 64-bitowych wystąpieniach Sn.exe.
-q[uiet] Określa tryb cichy; pomija wyświetlanie komunikatów o powodzeniu.
-R[a] assembly infile Ponownie podpisuje wcześniej podpisany lub opóźniony zestaw z parą kluczy w pliku infile.

Jeśli parametr -Ra jest używany, skróty są ponownie obliczane dla wszystkich plików w zestawie.
-Rc[a] assembly container Ponownie podpisuje wcześniej podpisany lub opóźniony zestaw z parą kluczy w kontenerze.

Jeśli jest używana funkcja -Rca , skróty są ponownie obliczane dla wszystkich plików w zestawie.
-Rh assembly Ponownie skompiluj skróty dla wszystkich plików w zestawie.
-t[p] infile Wyświetla token klucza publicznego przechowywanego w pliku . Zawartość pliku infile musi być kluczem publicznym wygenerowanym wcześniej na podstawie pliku pary kluczy przy użyciu -p. Nie używaj opcji -t[p], aby wyodrębnić token bezpośrednio z pliku pary kluczy.

Sn.exe oblicza token przy użyciu funkcji skrótu z klucza publicznego. Aby zaoszczędzić miejsce, środowisko uruchomieniowe języka wspólnego przechowuje tokeny kluczy publicznych w manifeście w ramach odwołania do innego zestawu, gdy rejestruje zależność do zestawu, który ma silną nazwę. Opcja -tp wyświetla klucz publiczny oprócz tokenu. AssemblySignatureKeyAttribute Jeśli atrybut został zastosowany do zestawu, token jest dla klucza tożsamości, a nazwa algorytmu skrótu i klucz tożsamości jest wyświetlany.

Należy pamiętać, że ta opcja nie weryfikuje podpisu zestawu i nie powinna być używana do podejmowania decyzji dotyczących zaufania. Ta opcja wyświetla tylko nieprzetworzone dane tokenu klucza publicznego.
-T[p] assembly Wyświetla token klucza publicznego dla zestawu.Zestaw musi być nazwą pliku zawierającego manifest zestawu.

Sn.exe oblicza token przy użyciu funkcji skrótu z klucza publicznego. Aby zaoszczędzić miejsce, środowisko uruchomieniowe przechowuje tokeny kluczy publicznych w manifeście w ramach odwołania do innego zestawu, gdy rejestruje zależność do zestawu, który ma silną nazwę. Opcja -Tp wyświetla klucz publiczny oprócz tokenu. AssemblySignatureKeyAttribute Jeśli atrybut został zastosowany do zestawu, token jest dla klucza tożsamości, a nazwa algorytmu skrótu i klucz tożsamości jest wyświetlany.

Należy pamiętać, że ta opcja nie weryfikuje podpisu zestawu i nie powinna być używana do podejmowania decyzji dotyczących zaufania. Ta opcja wyświetla tylko nieprzetworzone dane tokenu klucza publicznego.
-TS assembly infile Test podpisuje podpisany lub częściowo podpisany zestaw przy użyciu pary kluczy w pliku infile.
-TSc assembly container Test podpisuje podpisany lub częściowo podpisany zestaw przy użyciu pary kluczy w kontenerze kontenera kluczy.
-v assembly Sprawdza silną nazwę w zestawie, gdzie zestaw jest nazwą pliku zawierającego manifest zestawu.
-vf assembly Sprawdza silną nazwę w zestawie. W przeciwieństwie do opcji -v, -vf wymusza weryfikację, nawet jeśli jest wyłączona przy użyciu opcji -Vr.
-Vk regfile.reg assembly [userlist] [infile] Tworzy plik wpisów rejestracji (.reg), którego można użyć do zarejestrowania określonego zestawu na potrzeby pomijania weryfikacji. Reguły nazewnictwa zestawów, które mają zastosowanie do opcji -Vr , mają również zastosowanie do -Vk . Aby uzyskać informacje na temat opcji userlist i infile , zobacz opcję -Vr .
-Vl Wyświetla listę bieżących ustawień weryfikacji silnej nazwy na tym komputerze.
-Vr assembly [userlist] [infile] Rejestruje zestaw na potrzeby pomijania weryfikacji. Opcjonalnie można określić rozdzielaną przecinkami listę nazw użytkowników, do których powinna mieć zastosowanie weryfikacja pomijania. Jeśli określisz plik w pliku, weryfikacja pozostanie włączona, ale klucz publiczny w pliku jest używany w operacjach weryfikacji. Zestaw można określić w postaci *, strongname, aby zarejestrować wszystkie zestawy z określoną silną nazwą. W polu strongname określ ciąg cyfr szesnastkowych reprezentujący tokenizowaną formę klucza publicznego. Zobacz opcje -t i -T , aby wyświetlić token klucza publicznego. Ostrożność: Użyj tej opcji tylko podczas programowania. Dodanie zestawu do listy pominięcia weryfikacji powoduje utworzenie luki w zabezpieczeniach. Złośliwy zestaw może użyć w pełni określonej nazwy zestawu (nazwy zestawu, wersji, kultury i tokenu klucza publicznego) zestawu dodanego do listy pomijania weryfikacji w celu sfałszowania jego tożsamości. Pozwoliłoby to złośliwemu zestawowi również pominąć weryfikację.
-Vu assembly Zestaw wyrejestratorów do pomijania weryfikacji. Te same reguły nazewnictwa zestawów, które mają zastosowanie do -Vr mają zastosowanie do -Vu.
-Vx Usuwa wszystkie wpisy pomijania weryfikacji.
-? Wyświetla składnię poleceń i opcje narzędzia.

Uwaga / Notatka

Wszystkie opcje Sn.exe są uwzględniane w wielkości liter i muszą być wpisywane dokładnie tak, jak pokazano, aby było rozpoznawane przez narzędzie.

Uwagi

Opcje -R i -Rc są przydatne w przypadku zestawów, które zostały podpisane z opóźnieniem. W tym scenariuszu tylko klucz publiczny został ustawiony w czasie kompilacji, a podpisywanie jest wykonywane później, gdy jest znany klucz prywatny.

Uwaga / Notatka

W przypadku parametrów (na przykład -Vr), które zapisują w chronionych zasobach, takich jak rejestr, uruchom SN.exe jako administrator.

Narzędzie Strong Name zakłada, że pary kluczy publicznych/prywatnych są generowane za pomocą identyfikatora algorytmu AT_SIGNATURE . Pary kluczy publicznych/prywatnych wygenerowane za pomocą algorytmu AT_KEYEXCHANGE generują błąd.

Przykłady

Następujące polecenie tworzy nową, losową parę kluczy i przechowuje ją w pliku keyPair.snk.

sn -k keyPair.snk

Następujące polecenie przechowuje klucz w keyPair.snk kontenerze MyContainer w dostawcy CSP o silnej nazwie.

sn -i keyPair.snk MyContainer

Następujące polecenie wyodrębnia klucz publiczny z keyPair.snk pliku i przechowuje go w pliku publicKey.snk.

sn -p keyPair.snk publicKey.snk

Następujące polecenie wyświetla klucz publiczny i token klucza publicznego zawartego w publicKey.snkpliku .

sn -tp publicKey.snk

Następujące polecenie weryfikuje zestaw MyAsm.dll.

sn -v MyAsm.dll

Następujące polecenie powoduje usunięcie z domyślnego dostawcy MyContainer CSP.

sn -d MyContainer

Zobacz także