Сценарий подписания строгим именем
Обновлен: Ноябрь 2007
В следующем сценарии описаны основные этапы процесса формирования подписи сборки со строгим именем и способы использования этого имени в качестве ссылки.
Сборка 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 подписи строгого имени не проходят проверку, когда сборка загружается в домен приложения с полным доверием, например в домен приложения по умолчанию для зоны MyComputer. Эта функция называется пропуском строгих имен. В среде с полным доверием запрос разрешения StrongNameIdentityPermission всегда завершается успешно для подписанных сборок с полным доверием независимо от их подписей. Функция пропуска строгих имен позволяет избавиться от лишней нагрузки по проверке подписей строгого имени для сборок с полным доверием и дает возможность быстрее загружать сборки.
Функция пропуска применяется ко всем сборкам, подписанным строгим именем и обладающим следующими характеристиками.
Полное доверие без свидетельства StrongName (например, наличие свидетельства MyComputer).
Загрузка в домен AppDomain с полным доверием.
Загрузка из расположения, указанного в свойстве ApplicationBase такого объекта AppDomain.
Нет отложенной подписи.
Эту функцию можно отключить для отдельных приложений или для компьютера в целом. См. раздел Практическое руководство. Отключение функции пропуска строгих имен.
См. также
Ссылки
Средство строгих имен (Sn.exe)