Управление подписыванием сборок и манифестов
Подпись строгим именем предоставляет программному компоненту глобальный уникальный идентификатор. Строгие имена используются, чтобы гарантировать, что сборка не может быть подделана кем-то другим, и убедиться, что компоненты зависимостей и операторы конфигурации соотносятся с корректным компонентом и версией.
Строгое имя состоит из удостоверения сборки (простое текстовое имя, номер версии и сведения о языке и региональных параметрах), а также открытого ключа и цифровой подписи.
Сведения о подписи сборок в проектах Visual Basic и C# см. в разделе Создание и использование сборок со строгими именами.
Сведения о подписи сборок в проектах C++ см. в разделе Сборки со строгими именами (C++/CLI).
Примечание.
Подписывание с использованием строгих имен не защищает от реконструирования сборки. Сведения о защите от реконструирования см. в статье о программе Dotfuscator Community.
Типы активов и подписывание
Подписывать можно манифесты приложений и сборки .NET.
исполняемые файлы (.exe);
манифесты приложений (.exe.manifest);
манифесты развертывания (.application);
сборки общих компонентов (.dll).
Подпишите следующие типы активов:
Сборки, если требуется развернуть их в глобальном кэше сборок (GAC).
Приложение ClickOnce и манифесты развертывания. Visual Studio включает подпись для этих приложений по умолчанию.
Основные сборки взаимодействия, которые используются для COM-взаимодействия. Служебная программа TLBIMP обеспечивает строгое именование при создании основной сборки взаимодействия из библиотеки COM-типов.
В общем случае не следует подписывать исполняемые файлы. Строго именованный компонент не может ссылаться на компонент с нестрогим именем, который развернут вместе с приложением. Visual Studio не подписывает исполняемые файлы приложений, но вместо этого подписывает манифест приложения, указывающий на исполняемый файл с нестрогим именем. Следует избегать подписи компонентов, являющихся собственными для вашего приложения, так как подпись может затруднить управление зависимостями.
Практическое руководство. Подписывание сборки в Visual Studio
Процедура подписывания сборки зависит от используемой версии конструктора проектов.
Для проектов C# .NET Core (и .NET 5 и более поздних версий) в Visual Studio 2022:
- Откройте окно свойств проекта (щелкните правой кнопкой мыши узел проекта в Обозреватель решений и выберите "Свойства").
- В разделе "Сборка" найдите строгое именование и установите флажок "Подписать сборку ". При установке флажка отображаются дополнительные параметры для файла ключа и задержки подписывания.
- Укажите файл ключа.
Если у вас нет файла ключа, можно использовать командную строку для создания .snk
файла. Вы также можете использовать или создать сертификат в .pfx
файле с помощью процесса публикации , а на шаге манифестов подписей можно создать тестовый сертификат только во время разработки и тестирования или для рабочей среды, использовать сертификат, выданный ИТ-отделом или авторизованным источником. См. статью "Развертывание классического приложения для .NET Для Windows с помощью ClickOnce".
Для проектов платформа .NET Framework и Visual Basic в Visual Studio 2022 или Visual Studio 2019:
- Откройте вкладку "Подпись" окна свойств проекта (щелкните правой кнопкой мыши узел проекта в Обозреватель решений и выберите "Свойства"). Перейдите на вкладку "Подписывание ".
- Установите флажок "Подписать сборку".
- Укажите файл ключа. Если вы решили создать файл ключа, новые файлы ключей всегда имеют формат PFX. Вам нужно ввести имя пользователя и пароль для нового файла.
Предупреждение
При этом следует защитить файл ключа паролем, чтобы предотвратить его использование другим пользователем. Ключи также можно защитить с помощью поставщиков или хранилищ сертификатов.
Кроме того, можно указать уже созданный ключ. Дополнительные сведения о создании пары ключей смотрите в разделе Создание пары открытого и закрытого ключей.
При наличии доступа к открытому ключу можно использовать отложенную подпись, чтобы отложить применение ключа. Для этого можно установить флажок Только отложенная подпись. Проект с отложенной подписью не будет работать, и нельзя будет выполнить его отладку. Однако можно пропустить проверку во время разработки с помощью Sn.exe (средство строгих имен) с параметром -Vr
.
Дополнительные сведения о подписи манифестов см. в разделе Практическое руководство. Подписание манифестов приложения и развертывания.