Практическое руководство. Создание пары открытого и закрытого ключейHow to: Create a public-private key pair

Для подписи сборки строгим именем необходимо иметь пару, состоящую из открытого и закрытого ключа.To sign an assembly with a strong name, you must have a public/private key pair. Эта пара криптографических ключей используется во время компиляции для создания сборки со строгим именем.This public and private cryptographic key pair is used during compilation to create a strong-named assembly. Пару ключей можно создать с помощью средства для работы со строгими именами (Sn.exe).You can create a key pair using the Strong Name tool (Sn.exe). Файлы пары ключей обычно имеют расширение SNK.Key pair files usually have an .snk extension.

Примечание

В Visual Studio страницы свойств проекта C# и Visual Basic включают вкладку Подписывание, которая позволяет выбрать существующие файлы ключей или создать новые файлы ключей без использования Sn.exe.In Visual Studio, the C# and Visual Basic project property pages include a Signing tab that enables you to select existing key files or to generate new key files without using Sn.exe. В Visual C++ можно указать расположение уже существующего файла ключа на странице свойств Дополнительно в разделе Компоновщик раздела Свойства конфигурации окна Страницы свойств.In Visual C++, you can specify the location of an existing key file in the Advanced property page in the Linker section of the Configuration Properties section of the Property Pages window. Использование атрибута AssemblyKeyFileAttribute для идентификации пар файлов ключей признано устаревшим начиная с Visual Studio 2005.The use of the AssemblyKeyFileAttribute attribute to identify key file pairs was made obsolete beginning with Visual Studio 2005.

Создание пары ключейCreate a key pair

Чтобы создать пару ключей, в командной строке введите следующую команду:To create a key pair, at a command prompt, type the following command:

sn –k <file name>sn –k <file name>

В этой команде имя файла — это имя выходного файла, содержащего пару ключей.In this command, file name is the name of the output file containing the key pair.

В следующем примере создается пара ключей с именем sgKey.snk.The following example creates a key pair called sgKey.snk.

sn -k sgKey.snk

Если требуется отложить подписание сборки, а также управлять парой ключей целиком (что может потребоваться разве что для тестирования), можно использовать следующие команды для создания пары ключей и извлечения открытого ключа из нее в отдельный файл.If you intend to delay sign an assembly and you control the whole key pair (which is unlikely outside test scenarios), you can use the following commands to generate a key pair and then extract the public key from it into a separate file. Во-первых, создайте пару ключей:First, create the key pair:

sn -k keypair.snk

Затем извлеките открытый ключ из пары ключей и скопируйте его в отдельный файл:Next, extract the public key from the key pair and copy it to a separate file:

sn -p keypair.snk public.snk

После создания пары ключей необходимо поместить файл в расположение, в котором его смогут найти инструменты создания подписи строгого имени.Once you create the key pair, you must put the file where the strong name signing tools can find it.

При подписании сборки строгим именем компоновщик сборок (Al.exe) выполняет поиск файла ключа относительно текущей и выходной папки.When signing an assembly with a strong name, the Assembly Linker (Al.exe) looks for the key file relative to the current directory and to the output directory. При использовании компиляторов, работающих в режиме командной строки, достаточно просто скопировать ключ в текущий каталог, содержащий модули кода.When using command-line compilers, you can simply copy the key to the current directory containing your code modules.

При использовании более ранней версии Visual Studio, в которой нет вкладки Подписание в свойствах проекта, рекомендуемым расположением файла ключа является каталог проекта с атрибутом файла, заданным следующим образом:If you are using an earlier version of Visual Studio that does not have a Signing tab in the project properties, the recommended key file location is the project directory with the file attribute specified as follows:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

См. такжеSee also