Создание и использование сборок со строгими именами

Строгое имя состоит из удостоверения сборки, включающего ее простое текстовое имя, номер версии и сведения о языке и региональных параметрах (если они имеются), а также открытый ключ и цифровую подпись. Строгое имя создается на основе файла сборки с помощью соответствующего закрытого ключа. Файл сборки содержит ее манифест, в котором имеются имена и хэш-коды всех входящих в сборку файлов.

Сборки со строгим именем могут использовать типы только из других сборок со строгими именами. В противном случае безопасность сборки со строгим именем будет под угрозой.

Обзор включает следующие разделы.

  • Сценарий подписания строгим именем

  • Пропуск проверки подписей для доверенных сборок

  • Связанные разделы

Сценарий подписания строгим именем

В следующем сценарии описаны основные этапы процесса формирования подписи сборки со строгим именем и способы использования этого имени в качестве ссылки.

  1. Сборка A была создана со строгим именем с помощью одного из следующих методов:

    • Используя среду разработки, которая поддерживает создание строгого имени, например Visual Studio 2005.

    • Создав криптографическую пару ключей с использованием средства строгих имен (Sn.exe) и назначив эту пару ключей сборке с помощью компилятора командной строки или с помощью компоновщика сборок (Al.exe). Пакет средств разработки для Windows включает файлы Sn.exe и Al.exe.

  2. Среда или средство разработки подписывают хэш-код файла, содержащего манифест сборки закрытым ключом разработчика. Эта цифровая подпись сохраняется в переносимом выполняемом файле (PE), содержащем манифест сборки A.

  3. Сборка B является потребителем сборки A. Раздел ссылок манифеста сборки B содержит маркер, представляющий открытый ключ сборки А. Маркер является частью полного открытого ключа и используется для экономии места вместо самого ключа.

  4. Среда CLR проверяет подпись строгого имени, когда сборка помещается в глобальный кэш сборок. При связке со строгим именем во время выполнения среда CLR сравнивает ключ, сохраненный в манифесте сборки В с ключом, использованным для генерации строгого имени сборки А. Если проверка безопасности платформы .NET Framework и процесс привязки завершены успешно, то для сборки В гарантируется, что никакие части сборки А не были изменены и сборка А действительно сформирована соответствующими разработчиками.

ПримечаниеПримечание

В этом сценарии не рассматриваются вопросы безопасности.Помимо строгого имени, сборки могут иметь полные подписи Microsoft Authenticode.Подписи такого типа включают в себя сертификат, который устанавливает доверие.Обратите внимание, что строгие имена не требуют подписи кода указанным образом.Ключи, фактически используемые для генерации строгого имени, не должны совпадать с ключами, используемыми для создания подписи Authenticode.

К началу

Пропуск проверки подписей для доверенных сборок

Начиная с версии .NET Framework 3.5 с пакетом обновления 1 (SP1) подписи строгого имени не проходят проверку, когда сборка загружается в домен приложения с полным доверием, например в домен приложения по умолчанию для зоны MyComputer. Эта функция называется пропуском строгих имен. В среде с полным доверием запрос разрешения StrongNameIdentityPermission всегда завершается успешно для подписанных сборок с полным доверием независимо от их подписей. Функция пропуска строгих имен позволяет избавиться от лишней нагрузки по проверке подписей строгого имени для сборок с полным доверием и дает возможность быстрее загружать сборки.

Функция пропуска применяется ко всем сборкам, подписанным строгим именем и обладающим следующими характеристиками.

  • Полное доверие без свидетельства StrongName (например, наличие свидетельства MyComputer).

  • Загрузка в домен AppDomain с полным доверием.

  • Загрузка из расположения, указанного в свойстве ApplicationBase такого объекта AppDomain.

  • Нет отложенной подписи.

Эту функцию можно отключить для отдельных приложений или для компьютера в целом. См. раздел Практическое руководство. Отключение функции пропуска строгих имен.

К началу

Связанные разделы

Заголовок

Описание

Практическое руководство. Создание пары открытого и закрытого ключей

Описывает способ создания пары криптографических ключей, используемых для подписи сборки.

Практическое руководство. Подписание сборки строгим именем

Описывает способ создания сборки со строгим именем.

Практическое руководство. Создание ссылки на сборку со строгим именем

Описание процедуры использования ссылок на типы или ресурсы, находящиеся в сборке со строгим именем, во время компиляции или во время выполнения.

Практическое руководство. Отключение функции пропуска строгих имен

Описывает порядок отключения функции, которая позволяет пропустить проверку подписей строгого имени. Эту функцию можно отключить для всех или для отдельных приложений.

Создание сборок

Предоставляет основные сведения об однофайловых и многофайловых сборках.

Практическое руководство. Откладывание подписания сборки (Visual Studio)

Объясняются способы подписывания сборки строгим именем после ее создания.

Sn.exe (средство строгих имен)

Описывается средство, включенное в платформу .NET Framework, которое помогает создать сборки со строгими именами. Это средство предусматривает параметры для управления ключами, генерации подписи и ее проверки.

Al.exe (компоновщик сборок)

Описывается средство, включенное в платформу .NET Framework, которое создает файл с манифестом сборки из одного или нескольких файлов, являющихся модулями или файлами ресурсов.

К началу