Sn.exe (Narzędzie silnych nazw)

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

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 Zestawy o silnych nazwach i Instrukcje: podpisywanie zestawu przy użyciu silnej nazwy.

Narzędzie silnych nazw jest automatycznie instalowane z Visual Studio. Aby uruchomić to narzędzie, użyj wiersza polecenia dla deweloperów programu Visual Studio lub programu Visual Studio Developer PowerShell.

Uwaga

Na komputerach 64-bitowych uruchom 32-bitową wersję Sn.exe przy użyciu wiersza polecenia dla deweloperów 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

Opcja Opis
-a identityKeyPairFile signaturePublicKeyFile AssemblySignatureKeyAttribute Generuje dane do migrowania klucza tożsamości do klucza podpisu z pliku.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile AssemblySignatureKeyAttribute Generuje dane do migrowania klucza tożsamości do klucza podpisu z kontenera kluczy.
-c [csp] Określa domyślnego dostawcę usług kryptograficznych (CSP) do podpisywania silnymi nazwami. To ustawienie odnosi się do całego komputera. Jeśli nie określisz nazwy CSP, Sn.exe wyczyści bieżące ustawienie.
-d container Usuwa określony kontener kluczy z CSP silnej nazwy.
-D assembly1 assembly2 Weryfikuje, czy dwa zestawy różnią się tylko podpisem. Jest to często używane jako sprawdzenie po ponownym podpisaniu zestawu inną parą kluczy.
-e assembly outfile Wyodrębnia klucz publiczny z zestawu i przechowuje go w pliku outfile.
-h Wyświetla składnię polecenia i opcje narzędzia.
-i infile container Instaluje parę kluczy z pliku infile w określonym kontenerze kluczy. Kontener kluczy mieści się w CSP silnej nazwy.
-k [keysize] outfile Generuje nowy RSACryptoServiceProvider klucz o określonym rozmiarze i zapisuje go w określonym pliku. Oba klucze, publiczny i prywatny, są zapisywane do pliku.

Jeśli nie określono rozmiaru klucza, w przypadku gdy zainstalowany jest ulepszony dostawca kryptograficzny firmy Microsoft, domyślnie generowany jest 1024-bitowy klucz; w przeciwnym wypadku, generowany jest 512-bitowy klucz.

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

Jeśli nie podano ani y ani n, ta opcja wyświetla bieżące ustawienie.
-o infile [outfile] Wyodrębnia klucz publiczny z pliku infile i zapisuje go w pliku .csv. Poszczególne bajty klucza publicznego są rozdzielone przecinkami. Ten format jest użyteczny dla trwale zakodowanych odwołań do kluczy, takich jak zainicjowane tablice w kodzie źródłowym. Jeśli nie określisz pliku wyjściowego, ta opcja spowoduje umieszczenie danych wyjściowych w Schowku. Uwaga: Ta opcja nie sprawdza, czy dane wejściowe są tylko kluczem publicznym. Jeśli element infile zawiera parę kluczy z kluczem prywatnym, klucz prywatny również zostanie wyodrębniony.
-p infile outfile [hashalg] Wyodrębnia klucz publiczny z pary kluczy w pliku infile i zapisuje 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 opcji /delaysign+ i /keyfilekonsolidatora zestawów (Al.exe). Gdy zestaw jest podpisany z opóźnieniem, w czasie kompilacji ustawiany jest tylko klucz publiczny i rezerwowana jest przestrzeń w pliku na późniejsze dodanie podpisu, gdy znany będzie 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 wymuszona jest zasada obejścia silnej nazwy. W przypadku określenia wartości 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ć swoje własne sprawdzenie dopasowania silnej nazwy.

Jeśli ani nie yn zostanie określony, ta opcja wyświetla bieżące ustawienie. Wartość domyślna to y. Uwaga: 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 Oblicza ponownie 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ć przestrzeń, środowisko uruchomieniowe języka wspólnego zapisuje tokeny klucza publicznego w manifeście jako część odwołania do innego zestawu, gdy rejestruje zależność do zestawu z silną nazwą. Opcja -tp wyświetla klucz publiczny oprócz tokenu. AssemblySignatureKeyAttribute Jeśli atrybut został zastosowany do zestawu, token jest kluczem tożsamości, a nazwa algorytmu skrótu i klucz tożsamości jest wyświetlany.

Zauważ, że ta opcja nie weryfikuje podpisu zestawu i nie powinna być używana do podejmowania decyzji dotyczących zaufania. Ta opcja wyświetla jedynie surowe 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ć przestrzeń, środowisko uruchomieniowe przechowuje tokeny klucza publicznego w manifeście jako część odwołania do innego zestawu, gdy rejestruje zależność do zestawu z silną nazwą. Opcja -Tp wyświetla klucz publiczny oprócz tokenu. AssemblySignatureKeyAttribute Jeśli atrybut został zastosowany do zestawu, token jest kluczem tożsamości, a nazwa algorytmu skrótu i klucz tożsamości jest wyświetlany.

Zauważ, że ta opcja nie weryfikuje podpisu zestawu i nie powinna być używana do podejmowania decyzji dotyczących zaufania. Ta opcja wyświetla jedynie surowe dane tokenu klucza publicznego.
-TS assembly infile Test podpisuje podpisany lub częściowo podpisany zestaw za pomocą pary kluczy w pliku infile.
-TSc assembly container Test podpisuje podpisany lub częściowo podpisany zestaw za pomocą 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, aby pomijał weryfikację. Reguły nazewnictwa zestawów, które mają zastosowanie do opcji -Vr , mają również zastosowanie do –Vk . Aby uzyskać informacje o opcjach userlist i infile , zobacz opcję –Vr .
-Vl Wyświetla listę bieżących ustawień dla weryfikacji silnych nazw na tym komputerze.
-Vr assembly [userlist] [infile] Rejestruje zestaw do pomijania weryfikacji. Opcjonalnie można określić listę rozdzielonych przecinkami nazw użytkownika, do których powinno zostać zastosowane pominięcie weryfikacji. Jeśli określisz plik infile, weryfikacja pozostanie włączona, ale klucz publiczny w pliku infile 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 szesnastkowy reprezentujący tokenizowaną formę klucza publicznego. Zobacz opcje -t i -T , aby wyświetlić token klucza publicznego. Ostrożność: Tej opcji należy używać tylko podczas programowania. Dodanie zestawu, który będzie pomijał listę weryfikacji, tworzy lukę w zabezpieczeniach. Złośliwy zestaw mógłby użyć w pełni określonej nazwy (nazwy zestawu, wersji, kultury i tokenu klucza publicznego) zestawu dodanego do listy pomijania weryfikacji, aby ukryć swoją tożsamość. Pozwoliłoby to złośliwemu zestawowi na ominięcie weryfikacji.
-Vu assembly Wyrejestrowywanie zestawu do pomijania weryfikacji. Te same reguły nazewnictwa zestawów, które mają zastosowanie do -Vr mają zastosowanie do -Vu.
-Vx Usuwa wszystkie wpisy o pomijaniu weryfikacji.
-? Wyświetla składnię polecenia i opcje narzędzia.

Uwaga

We wszystkich opcjach Sn.exe rozróżniana jest wielkość liter i opcje muszą być wpisywane dokładnie tak, jak to zostało pokazane, aby zostały rozpoznane 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 podczas kompilacji, a podpisanie wykonywane jest później, gdy znany jest klucz prywatny.

Uwaga

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 przy użyciu 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 keyPair.snkpliku .

sn -k keyPair.snk

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

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 usług kryptograficznych.

sn -d MyContainer

Zobacz też