Sn.exe (Narzędzie silnych nazw)

Narzędzie silnej nazwy (Sn.exe) ułatwia podpisywanie zestawów za pomocą silnych nazw. Sn.exe dostarcza opcje do zarządzania kluczami, generowania podpisów i ich weryfikacji.

Ostrzeżenie

Ze względów bezpieczeństwa nie należy polegać na silnych nazwach. Zapewniają one tylko unikatową tożsamość.

Aby uzyskać więcej informacji na temat silnego nazewnictwa i zestawów o silnych nazwach, zobacz Zestawy o silnej nazwie i Jak podpisać zestaw za pomocą silnej nazwy.

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

Uwaga

Na komputerach 64-bitowych uruchom 32-bitową wersję programu Sn.exe przy użyciu programu wiersz polecenia dla deweloperów for Visual Studio i wersji 64-bitowej przy użyciu wiersza polecenia systemu 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 Generuje AssemblySignatureKeyAttribute dane w celu zmigrowania klucza tożsamości do klucza podpisu z pliku.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Generuje dane AssemblySignatureKeyAttribute w celu zmigrowania 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 zapisuje 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 klucz o określonym rozmiarze i RSACryptoServiceProvider 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ę usług kryptograficznych 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|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. Jeśli określisz 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 .csv pliku. 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 powoduje, że dane wyjściowe są umieszczane 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 jest również 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óźnienia podpisywania zestawu przy użyciu opcji /delaysign+ i /keyfile w programie Assembly Linker (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 zapisuje go w pliku outfile. W przypadku użycia opcji hashalg algorytm RSA jest używany do wyodrębniania klucza publicznego.
-Pb [y|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 po załadowaniu do zestawu o pełnym zaufaniu. AppDomain Jeśli określisz n, silne nazwy są weryfikowane pod względem poprawności, ale nie dla określonej silnej nazwy. Nie StrongNameIdentityPermission ma wpływu na zestawy o pełnym zaufaniu. Musisz wykonać swoje własne sprawdzenie dopasowania silnej nazwy.

Jeśli ani y ani nie zostanie n 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 wystąpieniach 32-bitowych, jak i 64-bitowych Sn.exe.
-q[uiet] Określa tryb cichy; pomija wyświetlanie komunikatów o powodzeniu.
-R[a] assembly infile Ponownie podpisuje zestaw z podpisem wcześniej podpisanym lub z opóźnieniem za pomocą pary kluczy w pliku infile.

Jeśli jest używany -Ra, skróty są ponownie kompilowane dla wszystkich plików w zestawie.
-Rc[a] assembly container Ponownie podpisuje zestaw z podpisem wcześniej podpisanym lub z opóźnieniem za pomocą pary kluczy w kontenerze.

Jeśli -Rca jest używany, skróty są ponownie kompilowane 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 infile. 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. Jeśli atrybut został zastosowany do zestawu, token dotyczy klucza tożsamości i jest wyświetlana nazwa algorytmu wyznaczania wartości skrótu AssemblySignatureKeyAttribute i klucza tożsamości.

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, który zawiera 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. Jeśli atrybut został zastosowany do zestawu, token dotyczy klucza tożsamości i jest wyświetlana nazwa algorytmu wyznaczania wartości skrótu AssemblySignatureKeyAttribute i klucza tożsamości.

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 kluczy kontenera .
-v assembly Weryfikuje silną nazwę w zestawie, gdzie zestaw jest nazwą pliku zawierającego manifest zestawu.
-vf assembly Weryfikuje silną nazwę w zestawie. W przeciwieństwie do opcji -v, opcja -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 zestawu, które mają zastosowanie do opcji -Vr, dotyczą również –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. W przypadku określenia wartości infile weryfikacja pozostaje 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 o określonej silnej nazwie. W przypadku silnej nazwy określ ciąg cyfr szesnastkowych reprezentujących tokenizizowana postać klucza publicznego. Zobacz opcje -t i -T, aby wyświetlić token klucza publicznego. Uwaga: Tej opcji należy używać tylko podczas opracowywania. 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 Wyrejestrowywuje zestaw do pomijania weryfikacji. Te same reguły nazewnictwa zestawu, 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 zapisają do chronionych zasobów, takich jak rejestr, uruchom SN.exe jako administrator.

Narzędzie silnej nazwy zakłada, że pary kluczy publiczny-prywatny są generowane przy użyciu AT_SIGNATURE identyfikatora algorytmu. Pary kluczy publiczny-prywatny wygenerowane za pomocą AT_KEYEXCHANGE algorytmu generują błąd.

Przykłady

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

sn -k keyPair.snk  

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

sn -i keyPair.snk MyContainer  

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

sn -p keyPair.snk publicKey.snk  

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

sn -tp publicKey.snk  

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

sn -v MyAsm.dll  

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

sn -d MyContainer  

Zobacz też