Поделиться через


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

Обновлен: Ноябрь 2007

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

  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 и процесс привязки завершены успешно, то для сборки В гарантируется, что никакие части сборки А не были изменены и сборка А действительно сформирована соответствующими разработчиками.

szdke3d6.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

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

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

См. также

Ссылки

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

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

Другие ресурсы

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