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