Sn.exe (средство строгих имен)
Средство для работы со строгими именами (Sn.exe) позволяет подписывать сборки строгими именами. Программа Sn.exe предусматривает параметры для управления ключами, генерации подписи и ее проверки.
![]() |
---|
На 64-разрядных компьютерах запускайте как 32-разрядную версию Sn.exe, используя командную строку Visual Studio, так и 64-разрядную версию с помощью командной строки Visual Studio x 64 Win64. |
Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.
Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.
– или –
Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).
В командной строке введите следующее:
sn [-quiet][option [parameter(s)]]
Параметры
Параметр |
Описание |
---|---|
-c [csp] |
Задает поставщика служб шифрования (CSP), используемого по умолчанию для подписания строгим именем. Этот параметр применяется к компьютеру в целом. Если имя поставщика не задается, то при использовании Sn.exe текущее значение будет очищено. |
-d контейнер |
Удаляет указанный контейнер ключей из поставщика служб шифрования со строгими именами. |
-D сборка1 сборка2 |
Проверяет, что две сборки отличаются только лишь подписью. Данный подход часто используется как средство проверки после того, как сборка была повторно подписана с помощью другой пары ключей. |
-e выходной_файл_сборки |
Извлекает открытый ключ из сборки сборка и записывает его в выходной_файл. |
-h |
Отображает синтаксис команд и параметры программы. |
-i входной_файл контейнер |
Устанавливает в указанный контейнер ключей пару ключей из файла входной_файл. Контейнер ключей располагается в поставщике служб шифрования со строгими именами. |
-k [размер_ключа] выходной_файл |
Создает новый ключ RSACryptoServiceProvider указанного размера и записывает его в указанный файл. В файл записываются и открытый, и закрытый ключи. Если размер ключа не задан, по умолчанию создается 1024-разрядный ключ при условии, что установлен усовершенствованный поставщик служб шифрования (Microsoft); в противном случае создается 512-разрядный ключ. Параметр размер_ключа поддерживает ключи длиной от 384 до 16 384 бит с приращениями по 8 бит, если установлен усовершенствованный поставщик служб шифрования (Microsoft). Если установлен базовый поставщик служб шифрования (Microsoft), поддерживаются ключи длиной от 384 до 512 бит с приращениями по 8 бит. |
-m [y|n] |
Задает зависимость контейнера ключей от компьютера или пользователя. В случае значения y контейнеры ключей зависят от компьютера. В случае значения n контейнеры ключей зависят от пользователя. Если ни y, ни n не задано, то при использовании этого параметра будет отображено текущее значение. |
-o входной_файл [выходной_файл] |
Извлекает открытый ключ из файла входной_файл и сохраняет его в CSV-файле. Байты открытого ключа разделяются запятыми. Этот формат удобно применять для непосредственного использования в исходном коде ссылок на ключи в виде инициализированных массивов. Если выходной_файл не указывается, то при использовании этого параметра выходные данные будут помещены в буфер обмена. ![]()
Данный параметр не проверяет, содержится ли во входном файле что-либо, помимо открытого ключа.Если infile содержит пару ключей, в том числе закрытый ключ, последний также извлекается.
|
-p входной_файл выходной_файл |
Извлекает открытый ключ из хранящейся в файле входной_файл пары ключей и записывает его в выходной_файл. Полученный открытый ключ может использоваться для отложенной подписи сборки с помощью параметров /delaysign+ и /keyfile компоновщика сборок (Al.exe). Если применяется отложенная подпись сборки, то во время компиляции устанавливается только открытый ключ, а в файле выделяется место для подписи, которая будет добавлена позже, когда станет известен закрытый ключ. |
-pc контейнер выходной_файл |
Извлекает открытый ключ из хранящейся в контейнере контейнер пары ключей и записывает его в выходной_файл. |
-Pb [y|n] |
Указывает, применяется ли политика пропускания строгих имен. В случае значения y строгие имена сборок с полным доверием не подвергаются проверке при загрузке в AppDomain с полным доверием. В случае значения n строгие имена проверяются на корректность, но не на соответствие конкретному строгому имени. Класс StrongNameIdentityPermission к сборкам с полным доверием не применяется. Проверку на соответствие строгих имен необходимо выполнять отдельно. Если не задано ни y, ни n, отображается текущее значение. По умолчанию используется значение y. ![]()
На 64-разрядных компьютерах значение этого параметра необходимо задавать и в 32-разрядном, и в 64-разрядном экземплярах Sn.exe.
|
-q[uiet] |
Определяет "тихий" режим работы; подавляет отображение сообщений об успешно выполненных операциях. |
-R[a] сборка входной_файл |
Повторно подписывает ранее подписанную сборку или сборку с отложенной подписью с помощью пары ключей, содержащейся в файле входной_файл. Если используется параметр -Ra, для всех файлов сборки повторно вычисляются хэш-коды. |
-Rc[a] сборка контейнер |
Повторно подписывает ранее подписанную сборку или сборку с отложенной подписью с помощью пары ключей, содержащихся в контейнере контейнер. Если используется параметр -Rca, для всех файлов сборки повторно вычисляются хэш-коды. |
-Rh сборка |
Повторно рассчитывает хэш-коды для всех файлов сборки. |
-t[p] входной_файл |
Отображает маркер открытого ключа, хранящегося в файле входной_файл. Входной_файл должен содержать открытый ключ, ранее сгенерированный из файла пары ключей с использованием параметра -p. Не используйте параметр -t[p] для непосредственного извлечения маркера из файла пары ключей. Sn.exe вычисляет маркер путем использования функции хэширования открытого ключа. В целях экономии места общеязыковая среда выполнения сохраняет маркеры открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки, имеющей строгое имя. Параметр -tp, кроме маркера, отображает и открытый ключ. Следует иметь в виду, что данный параметр не проверяет подпись сборки и не должен использоваться при принятии решений о доверии. Этот параметр лишь отображает необработанные данные маркера открытого ключа. |
-T[p] сборка |
Отображает токен открытого ключа для сборки. Значением параметра assembly должно быть имя файла, содержащего манифест сборки. Sn.exe вычисляет маркер путем использования функции хэширования открытого ключа. В целях экономии места среда выполнения сохраняет маркеры открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки, имеющей строгое имя. Параметр -Tp, кроме маркера, отображает и открытый ключ. Следует иметь в виду, что данный параметр не проверяет подпись сборки и не должен использоваться при принятии решений о доверии. Этот параметр лишь отображает необработанные данные маркера открытого ключа. |
-TSassembly infile |
Выполняет пробное подписание полностью или частично подписанной сборки assembly с использованием пары ключей из файла infile. |
-TSc assembly container |
Выполняет пробное подписание полностью или частично подписанной сборки assembly с использованием пары ключей из контейнера ключей container. |
-v сборка |
Проверяет строгое имя в сборке сборка, где сборка представляет собой имя файла, содержащего манифест сборки. |
-vf assembly |
Проверяет строгое имя в сборке assembly. В отличие от параметра -v при использовании параметра -vf проверка производится, даже если она отключена с помощью параметра -Vr. |
-Vl |
Выводит текущие параметры проверки строгих имен на данном компьютере. |
-Vr assembly [userlist] [infile] |
Регистрирует сборку сборка для пропуска проверки. Кроме того, можно задать разделенный запятыми список имен пользователей. Если задан входной_файл, проверка остается включенной, но в ней используется открытый ключ, находящийся в файле входной_файл. Сборка может быть задана в формате *, строгое_имя, чтобы зарегистрировать все сборки, имеющие указанное строгое имя. Строгое_имя должно быть задано в виде строки шестнадцатеричных цифр, представляющих открытый ключ в форме маркера. Сведения об отображении маркера открытого ключа см. в описании параметров -t и -T. ![]()
Используйте этот параметр только во время разработки.При добавлении сборки в список непроверяемых сборок создается уязвимость в системе безопасности.Вредоносная сборка может использовать полное имя сборки (имя сборки, версия, язык и региональные параметры, маркер открытого ключа), добавленное в список непроверяемых, с целью подделки ее идентификации.Данный подход позволяет вредоносной сборке также избежать проверки.
|
-Vu assembly |
Отменяет пропуск проверки для сборки сборка. Правила использования имен сборок для параметра -Vu те же, что и для параметра -Vr. |
-Vx |
Удаляет все данные, относящиеся к пропуску проверки. |
-? |
Отображает синтаксис команд и параметры программы. |
![]() |
---|
Все параметры Sn.exe зависят от регистра и должны быть введены в точности так, как было показано выше, для правильного их распознавания данной программой. |
Заметки
Параметры -R и –Rc могут использоваться для сборок с отложенной подписью. При этом во время компиляции устанавливается только открытый ключ, а подпись выполняется позднее, когда становится известен закрытый ключ.
![]() |
---|
Для параметров (например, –Vr), которые осуществляют запись в защищенные ресурсы, такие как реестр, запускайте SN.exe от имени администратора. |
Примеры
В следующей команде создается новая пара случайных ключей, которая сохраняется в файле keyPair.snk.
sn -k keyPair.snk
Следующая команда сохраняет ключ из файла keyPair.snk в контейнере MyContainer поставщика служб шифрования со строгими именами.
sn -i keyPair.snk MyContainer
Следующая команда извлекает открытый ключ из файла keyPair.snk и сохраняет его в файле publicKey.snk.
sn -p keyPair.snk publicKey.snk
Следующая команда отображает открытый ключ и его маркер, которые содержатся в файле publicKey.snk.
sn -tp publicKey.snk
Следующая команда проверяет сборку MyAsm.dll.
sn -v MyAsm.dll
Следующая команда удаляет MyContainer из поставщика служб шифрования со строгими именами, используемого по умолчанию.
sn -d MyContainer
См. также
Ссылки
Командная строка Visual Studio и пакета Windows SDK
Основные понятия
Другие ресурсы
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Апрель 2011 |
Добавлены сведения об использовании командных строк Visual Studio и Windows SDK. |
Улучшение информации. |
Август 2010 |
Добавлены сведения о запуске средства на 64-разрядных компьютерах. |
Улучшение информации. |