Создание и использование сборок со строгими именами
Строгое имя состоит из удостоверения сборки, включающего ее простое текстовое имя, номер версии и сведения о языке и региональных параметрах (если они имеются), а также открытый ключ и цифровую подпись. Строгое имя создается на основе файла сборки с помощью соответствующего закрытого ключа. Файл сборки содержит ее манифест, в котором имеются имена и хэш-коды всех входящих в сборку файлов.
Сборки со строгим именем могут использовать типы только из других сборок со строгими именами. В противном случае безопасность сборки со строгим именем будет под угрозой.
Обзор включает следующие разделы.
Сценарий подписания строгим именем
Пропуск проверки подписей для доверенных сборок
Связанные разделы
Сценарий подписания строгим именем
В следующем сценарии описаны основные этапы процесса формирования подписи сборки со строгим именем и способы использования этого имени в качестве ссылки.
Сборка A была создана со строгим именем с помощью одного из следующих методов:
Используя среду разработки, которая поддерживает создание строгого имени, например Visual Studio 2005.
Создав криптографическую пару ключей с использованием средства строгих имен (Sn.exe) и назначив эту пару ключей сборке с помощью компилятора командной строки или с помощью компоновщика сборок (Al.exe). Пакет средств разработки для Windows включает файлы Sn.exe и Al.exe.
Среда или средство разработки подписывают хэш-код файла, содержащего манифест сборки закрытым ключом разработчика. Эта цифровая подпись сохраняется в переносимом выполняемом файле (PE), содержащем манифест сборки A.
Сборка B является потребителем сборки A. Раздел ссылок манифеста сборки B содержит маркер, представляющий открытый ключ сборки А. Маркер является частью полного открытого ключа и используется для экономии места вместо самого ключа.
Среда CLR проверяет подпись строгого имени, когда сборка помещается в глобальный кэш сборок. При связке со строгим именем во время выполнения среда CLR сравнивает ключ, сохраненный в манифесте сборки В с ключом, использованным для генерации строгого имени сборки А. Если проверка безопасности платформы .NET Framework и процесс привязки завершены успешно, то для сборки В гарантируется, что никакие части сборки А не были изменены и сборка А действительно сформирована соответствующими разработчиками.
Примечание |
---|
В этом сценарии не рассматриваются вопросы безопасности.Помимо строгого имени, сборки могут иметь полные подписи Microsoft Authenticode.Подписи такого типа включают в себя сертификат, который устанавливает доверие.Обратите внимание, что строгие имена не требуют подписи кода указанным образом.Ключи, фактически используемые для генерации строгого имени, не должны совпадать с ключами, используемыми для создания подписи Authenticode. |
К началу
Пропуск проверки подписей для доверенных сборок
Начиная с версии .NET Framework 3.5 с пакетом обновления 1 (SP1) подписи строгого имени не проходят проверку, когда сборка загружается в домен приложения с полным доверием, например в домен приложения по умолчанию для зоны MyComputer. Эта функция называется пропуском строгих имен. В среде с полным доверием запрос разрешения StrongNameIdentityPermission всегда завершается успешно для подписанных сборок с полным доверием независимо от их подписей. Функция пропуска строгих имен позволяет избавиться от лишней нагрузки по проверке подписей строгого имени для сборок с полным доверием и дает возможность быстрее загружать сборки.
Функция пропуска применяется ко всем сборкам, подписанным строгим именем и обладающим следующими характеристиками.
Полное доверие без свидетельства StrongName (например, наличие свидетельства MyComputer).
Загрузка в домен AppDomain с полным доверием.
Загрузка из расположения, указанного в свойстве ApplicationBase такого объекта AppDomain.
Нет отложенной подписи.
Эту функцию можно отключить для отдельных приложений или для компьютера в целом. См. раздел Практическое руководство. Отключение функции пропуска строгих имен.
К началу
Связанные разделы
Заголовок |
Описание |
---|---|
Практическое руководство. Создание пары открытого и закрытого ключей |
Описывает способ создания пары криптографических ключей, используемых для подписи сборки. |
Описывает способ создания сборки со строгим именем. |
|
Практическое руководство. Создание ссылки на сборку со строгим именем |
Описание процедуры использования ссылок на типы или ресурсы, находящиеся в сборке со строгим именем, во время компиляции или во время выполнения. |
Практическое руководство. Отключение функции пропуска строгих имен |
Описывает порядок отключения функции, которая позволяет пропустить проверку подписей строгого имени. Эту функцию можно отключить для всех или для отдельных приложений. |
Предоставляет основные сведения об однофайловых и многофайловых сборках. |
|
Практическое руководство. Откладывание подписания сборки (Visual Studio) |
Объясняются способы подписывания сборки строгим именем после ее создания. |
Описывается средство, включенное в платформу .NET Framework, которое помогает создать сборки со строгими именами. Это средство предусматривает параметры для управления ключами, генерации подписи и ее проверки. |
|
Описывается средство, включенное в платформу .NET Framework, которое создает файл с манифестом сборки из одного или нескольких файлов, являющихся модулями или файлами ресурсов. |
К началу