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


Управление подписью сборок и манифестов

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

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

Сведения о подписи сборок в проектах Visual Basic и C# см. в статье "Создание и использование сборок с строгим именем".

Чтобы получить информацию о подписывании сборок в проектах C++, см. сборки с строгими именами (C++/CLI).

Замечание

Подпись строгого имени не защищает от реверс-инжиниринга сборки. Сведения о защите от обратной инженерии см. в разделе Dotfuscator Community.

Типы активов и подписывание

Вы можете подписать сборки и манифесты приложений .NET:

  • Исполняемые файлы (.exe)

  • Манифесты приложений (.exe.manifest)

  • Манифесты развертывания (.application)

  • Сборки общих компонентов (.dll)

Подпишите следующие виды активов:

  1. Сборки, если вы хотите разместить их в глобальном кэше сборок (GAC).

  2. Манифесты приложения и развертывания ClickOnce. Visual Studio включает подписывание по умолчанию для этих приложений.

  3. Основные межоперационные сборки, используемые для взаимодействия с COM. Служебная программа TLBIMP применяет строгое именование при создании первичной сборки взаимодействия из библиотеки типов COM.

Как правило, вы не должны подписывать исполняемые файлы. Строго именованный компонент не может ссылаться на нестрого именованный компонент, который развернут вместе с приложением. Visual Studio не подписывает исполняемые файлы приложений, а подписывает манифест приложения, который указывает на слабо именованный исполняемый файл. Избегайте подписывания компонентов, которые являются частными для приложения, так как подписывание может усложнять управление зависимостями.

Как подписать сборку в Visual Studio

Процедура подписывания сборки зависит от используемой версии конструктора проектов.

Для проектов C# .NET Core (и .NET 5 и более поздних версий) в Visual Studio 2022:

  1. Откройте окно свойств проекта (щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите "Свойства").
  2. В разделе "Сборка" найдите строгое именование и установите флажок "Подписать сборку ". При установке флажка отображаются дополнительные параметры для файла ключа и отложенной подписи.
  3. Укажите файл ключа.

Если у вас нет файла ключа, можно использовать командную строку для создания .snk файла. Вы также можете использовать или создать сертификат в .pfx файле, используя процесс Публикации. На шаге подписания манифестов можно создать тестовый сертификат для использования в процессе разработки и тестирования, а для производственной среды использовать сертификат, выданный вашим ИТ-отделом или авторизованным источником. См. Развертывание Windows Desktop приложения .NET с помощью ClickOnce.

Для проектов .NET Framework и Visual Basic в Visual Studio 2022 или Visual Studio 2019:

  1. Откройте вкладку "Подпись" окна свойств проекта (щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите "Свойства"). Перейдите на вкладку "Подписывание ".
  2. Выберите флажок "Подписать сборку".
  3. Укажите файл ключа. Если вы решили создать файл ключа, новые файлы ключей всегда создаются в формате PFX . Вам потребуется имя и пароль для нового файла.

Предупреждение

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

Вы также можете указать ключ, который вы уже создали. Дополнительные сведения о создании ключей см. в разделе "Создание пары открытого закрытого ключа".

Если у вас есть доступ только к открытому ключу, можно использовать отложенную подпись, чтобы отложить назначение ключа. Чтобы включить отложенную подпись, установите флажок Только отложенная подпись. Проект с отложенной подписью не запускается, и его нельзя отлаживать. Однако можно пропустить проверку на этапе разработки, используя инструмент Strong NameSn.exe с параметром -Vr.