Как подписать приложение в visual studio
Используйте страницу Подписывание конструктора проектов для подписи манифестов приложения и развертывания, а также сборок (подпись с помощью строгих имен).
Обратите внимание, что подпись манифестов приложения и развертывания отличается от подписи сборки, хотя обе задачи выполняются на странице Подписывание.
Кроме того, хранилище сведений о файле ключа для подписи манифеста и сборки различается. Для подписи манифеста сведения о ключе хранятся в базе данных криптографического хранилища на вашем компьютере и в хранилище сертификатов текущего пользователя Windows. Для подписи сборки информация о ключе хранится только в базе данных криптографического хранилища на вашем компьютере.
Чтобы открыть страницу Подписывание, выберите узел проекта в обозревателе решений и затем в меню Проект щелкните команду Свойства. После того, как откроется окно Конструктор проектов, перейдите на вкладку Подписывание.
Подписание манифестов приложения и развертывания
Флажок Подписать манифесты ClickOnce
Установите этот флажок, чтобы подписать манифесты приложения и развертывания с помощью пары из открытого и закрытого ключей. Дополнительные сведения об этой операции см. в разделе Практическое руководство. Подписание манифестов приложения и развертывания.
Кнопка Выбрать из хранилища
Позволяет выбрать существующий сертификат из хранилища личных сертификатов текущего пользователя. Один из этих сертификатов можно выбрать, чтобы подписать манифесты приложения и развертывания.
При нажатии кнопки Выбрать из хранилища открывается диалоговое окно Выбор сертификата, где перечислены сертификаты в вашем хранилище личных сертификатов, которые действительны в настоящее время (с неистекшим сроком действия) и имеют закрытые ключи. Назначение выбранного сертификата должно включать в себя подписывание кода.
Если щелкнуть элемент Просмотр свойств сертификатов, открывается диалоговое окно Сведения о сертификате. Это диалоговое окно содержит подробные сведения о сертификате и дополнительные параметры. Можно щелкнуть элемент Подробнее о сертификатах для просмотра дополнительных справочных сведений.
Кнопка Выбрать из файла
Позволяет выбрать сертификат из существующего файла ключа.
При нажатии кнопки Выбрать из файла открывается диалоговое окно Выбор файла, где можно выбрать файл ключа сертификата (PFX). Этот файл должен быть защищен паролем и пока отсутствовать в вашем хранилище личных сертификатов.
В диалоговом окне Введите пароль, чтобы открыть файл введите пароль для открытия файла ключа сертификата (PFX). Сведения о пароле хранятся в списке контейнера личных ключей и хранилище личных сертификатов.
Кнопка Создание тестового сертификата
Позволяет создать сертификат для тестирования. Тестовый сертификат используется для подписи манифестов развертывания и приложения ClickOnce.
При выборе элемента Создание тестового сертификата открывается диалоговое окно Создание тестового сертификата, в котором можно ввести пароль для файла ключа строгого имени для тестового сертификата. Этот файл имеет имя имя_проекта _TemporaryKey.pfx. Если нажать кнопку ОК без ввода пароля, PFX-файл не шифруется с использованием пароля.
Поле URL-адрес сервера меток времени
Указывает адрес сервера, ставящего метку времени для вашей подписи. При предоставлении сертификата этот внешний сайт проверяет время подписывания приложения.
Подпись сборки
Флажок Подписать сборку
Установите этот флажок, чтобы подписать сборку и создать файл ключа со строгим именем. Дополнительные сведения о подписи сборки с помощью конструктора проектов см. в разделе Практическое руководство. Подписывание сборки (Visual Studio).
Для подписывания сборки этот параметр использует средство Al.exe из Windows Software Development Kit (пакет SDK). Дополнительные сведения о Al.exe см. в разделе Практическое руководство. Подписание сборки строгим именем.
Список Выберите файл ключа строгого имени
Позволяет указать новый или существующий файл ключа со строгим именем, используемый для подписания сборки. Выберите <Browse. > , чтобы выбрать существующий файл ключа.
Выберите <New. > , чтобы создать файл для подписи сборки. Открывается диалоговое окно Создание ключа строгого имени, в котором можно указать имя файла ключа и защитить этот файл паролем. Пароль должен содержать по меньшей мере 6 символов. Если пароль задан, создается файл обмена личной информацией (PFX); если пароль не указан, создается файл ключа со строгим именем (SNK).
Кнопка Смена пароля
Изменяет пароль для файла ключа обмена личной информацией (PFX), который используется для подписи сборки.
При выборе элемента Смена пароля открывается диалоговое окно Изменение пароля ключа. В поле Старый пароль этого диалогового окна указан текущий пароль для файла ключа. Новый пароль должен содержать по меньшей мере 6 символов. Информация о пароле хранится в хранилище сертификатов текущего пользователя Windows.
Флажок Только отложенная подпись
Установите этот флажок, чтобы включить отложенную подпись.
В случае отложенной подписи проект нельзя выполнить или отладить. Однако можно использовать Sn.exe (программа Strong Name) с параметром -Vr , чтобы пропустить проверку во время разработки.
При подписи сборки у вас не всегда может быть доступ к закрытому ключу. Например, организация может использовать тщательно охраняемую пару ключей, не предоставляемую разработчикам для повседневного использования. Открытый ключ может быть доступен, однако доступ к закрытому ключу может предоставляться лишь нескольким сотрудникам. В этом случае можно использовать отложенную или частичную подпись для предоставления открытого ключа, отложив добавление закрытого ключа до передачи сборки.
Если вы хотите опубликовать приложение с помощью развертывания ClickOnce, манифесты приложения и развертывания должны быть подписаны парой из открытого и закрытого ключей с использованием технологии Authenticode. Манифесты можно подписать с помощью сертификата из хранилища сертификатов Windows или файла ключа.
Дополнительные сведения о развертывании ClickOnce см. в статье Развертывание и безопасность технологии ClickOnce.
Подписывание манифестов ClickOnce для приложений на базе EXE является необязательным. Дополнительные сведения см. в разделе "Создание неподписанных манифестов" этого документа.
Visual Studio поддерживает только файлы ключей для обмена личной информацией (PFX). Тем не менее, можно выбрать другие типы сертификатов из хранилища сертификатов текущего пользователя Windows, щелкнув Выбрать из хранилища на странице Подписывание свойств проекта.
Перейдите в окно свойств проекта (в обозревателе решений щелкните узел проекта правой кнопкой мыши и выберите пункт Свойства). На вкладке Подписывание установите флажок Подписать манифесты ClickOnce.
Появляется диалоговое окно Выбор сертификата с содержимым хранилища сертификатов Windows.
Если щелкнуть элемент Щелкните здесь, чтобы просмотреть свойства сертификата, открывается диалоговое окно Сведения о сертификате. Это диалоговое окно содержит подробные сведения о сертификате и дополнительные параметры. Щелкните Сертификаты для просмотра дополнительных справочных сведений.
Выберите сертификат, который хотите использовать для подписи манифестов.
Кроме того, можно указать адрес сервера меток времени в текстовом поле URL-адрес сервера меток времени. Этот сервер предоставляет метку времени, указывающую, когда был подписан манифест.
На странице Подписывание установите флажок Подписать манифесты ClickOnce.
Открывается диалоговое окно Выбор файла.
В диалоговом окне Выбор файла найдите требуемый файл ключа (PFX) и нажмите кнопку Открыть.
Этот параметр поддерживает только файлы с расширением PFX. При наличии файла ключа или сертификата в другом формате сохраните его в хранилище сертификатов Windows и выберите сертификат, описанный в предыдущей процедуре. Назначение выбранного сертификата должно включать в себя подписывание кода.
Отображается диалоговое окно Ввод пароля для открытия файла. (Если PFX-файл уже находится в хранилище сертификатов Windows или не защищен паролем, вы не получите запрос на ввод пароля.)
Введите пароль для доступа к файлу ключа и нажмите клавишу ВВОД.
PFX-файл не может содержать сведения о цепочке сертификатов. Если содержит, произойдет следующая ошибка импорта: Не удается найти сертификат и закрытый ключ для расшифровки. Чтобы удалить сведения о цепочке сертификатов, можно использовать Certmgr.msc и отключить параметрВключить все сертификаты при экспорте файла PFX.
На странице Подписывание установите флажок Подписать манифесты ClickOnce.
Чтобы создать сертификат для тестирования, нажмите кнопку Создание тестового сертификата.
В диалоговом окне Создание тестового сертификата введите пароль для защиты тестового сертификата.
Создание неподписанных манифестов
Подписывание манифестов ClickOnce для приложений на базе EXE является необязательным. Следующие процедуры демонстрируют создание неподписанных манифестов ClickOnce.
Неподписанные манифесты позволяют упростить разработку и тестирование приложения. Однако неподписанные манифесты представляют большую угрозу безопасности в рабочей среде. Используйте неподписанные манифесты, только если приложение ClickOnce выполняется на компьютерах в интрасети, которая полностью изолирована от Интернета или других источников вредоносного кода.
По умолчанию ClickOnce автоматически создает подписанные манифесты, если только один или несколько файлов специально не исключаются из создаваемого хэша. Другими словами, публикация приложения дает подписанные манифесты, если все файлы включены в хэш, даже если флажок Подписать манифесты ClickOnce снят.
Создание неподписанных манифестов и включение всех файлов в создаваемый хэш
Для создания неподписанных манифестов, которые включают все файлы в хэш, нужно сначала опубликовать приложение вместе с подписанными манифестами. Таким образом, сначала подпишите манифесты ClickOnce, выполнив одну из предыдущих процедур, а затем опубликуйте приложение.
На странице Подписывание снимите флажок Подписать манифесты ClickOnce.
Выполните сброс версии публикации, чтобы доступной была только одна версия приложения. По умолчанию Visual Studio автоматически увеличивает номер редакции для версии публикации при каждой публикации приложения. Дополнительные сведения см. в статье Практическое руководство. Установка версии публикации приложения ClickOnce.
Создание неподписанных манифестов и исключение одного или нескольких файлов из создаваемого хэша
На странице Подписывание снимите флажок Подписать манифесты ClickOnce.
Откройте диалоговое окно Файлы приложения и присвойте параметру Хэш значение Исключить для файлов, которые требуется исключить из создаваемого хэша.
Исключение файла из хэша настраивает ClickOnce на отключение автоматической подписи манифестов, поэтому вам не нужно сначала публиковать приложение с подписанными манифестами, как описано в предыдущей процедуре.
Для подписи программы установки (setup.exe) можно использовать SignTool.exe . Этот процесс позволяет проверить, не установлены ли на компьютер конечного пользователя измененные злоумышленниками файлы.
По умолчанию ClickOnce включает подписанные манифесты и подписанную программу установки. Если вы собираетесь изменить параметры программы установки в дальнейшем, ее следует подписать позже. Если вы измените параметры после того, как программа установки будет подписана, подпись будет повреждена.
В ходе описанной ниже процедуры генерируются неподписанные манифесты и неподписанная программа установки. После этого в Visual Studio станет доступна процедура подписи приложений ClickOnce, позволяющая сгенерировать подписанные манифесты. Программа установки остается неподписанной, чтобы клиент смог подписать исполняемый файл своим собственным сертификатом.
Генерирование неподписанной программы установки и ее последующая подпись
На компьютере разработчика установите сертификат для подписи манифестов.
Выберите проект в обозревателе решений.
в меню Project выберите свойства имяпроекта .
На странице Подпись снимите флажок Подпись манифестов ClickOnce.
На странице Публикация щелкните Необходимые компоненты.
Убедитесь, что все необходимые компоненты выбраны, и нажмите кнопку ОК.
На странице Публикация проверьте настройки публикации и нажмите кнопку Опубликовать сейчас.
Решение опубликует неподписанный манифест приложения, неподписанный манифест развертывания, файлы конкретной версии и неподписанную программу установки в расположение папки для публикации.
На странице Публикация щелкните Необходимые компоненты.
В диалоговом окне Необходимые компоненты снимите флажок Создать программу установки для необходимых компонентов.
На странице Публикация проверьте настройки публикации и нажмите кнопку Опубликовать сейчас.
Решение опубликует подписанный манифест приложения, подписанный манифест развертывания и файлы конкретной версии в расположение папки для публикации. Неподписанная программа установки в процессе публикации не переписывается.
На сайте клиента откройте командную строку.
Перейдите в каталог, содержащий файл .EXE.
Введите следующую команду, чтобы подписать файл .EXE:
Например, для подписи программы установки используются следующие команды:
Поскольку такие сборки однозначно идентифицируются, то это повышает ее безопасность, т.к. нельзя просто подменить библиотеку. Программа будет искать сборку по строгому имени.
Создание пары ключей
Для начала нужно создать пару (открытый и закрытый) ключей, которыми будем подписывать сборку. Для этого нужно воспользоваться утилитой sn.exe, однако сначала рассмотрим более простой способ, который подойдет большинству разработчиков.
Откройте свойства проекта в Visual Studio и перейдите во вкладку Signing. В этой вкладке устанавливается ключ для подписания данной сборки. Здесь же есть возможность создать новый ключ (*.snk или *.pfx).
Для создания нового ключа выберите пункт New. Будет показано такое диалоговое окно создания нового ключа.
Если вы выберите создание ключа с паролем, то будет создан ключ с расширением *.pfx. Чтобы использовать сборку подписанную таким ключом нужно знать пароль, который был введен при создание ключа.
Если вы снимите галочку использования пароля, то будет создан *.snk ключ. Только таким ключом можно подписать C++/CLI сборки.
Файл который будет создан будет содержать пару ключей: открытого и закрытого. Открытый ключ будет встроен в библиотеку, как цифровая подпись. Закрытый ключ должен хранится в секрете и не публиковаться. Если закрытый ключ станет известен, то будет возможность подписать другую сборку этим ключом и выдать ее за вашу. Это снизит надежность такой системы, т.к. можно будет внедрить в нее вредоносный код.
sn.exe
Для создания ключей используется библиотека sn.exe. Обычно она находится по следующему пути:
Создать пару ключей вы можете введя в консоли команду:
Подпись библиотеки
После того, как ключ создан, нужно в свойствах проекта, во вкладке Signing выбрать его в поле Choose a strong name key file. После компиляции проекта, созданная библиотека будет им подписана.
Читайте также: