Как подписывать приложения windows

Подписывание пакета приложения Windows 10 Sign a Windows 10 app package

Подписывание пакета приложения — это обязательный шаг в процессе создания развертываемых пакетов приложений Windows 10. App package signing is a required step in the process of creating a Windows 10 app package that can be deployed. В Windows 10 все приложения должны быть подписаны с помощью допустимого сертификата для подписи кода. Windows 10 requires all applications to be signed with a valid code signing certificate.

Для успешной установки приложения для Windows 10 пакет не только подписывается, но и настраивается как надежный на устройстве. To successfully install a Windows 10 application, the package doesn’t just have to be signed but also trusted on the device. Это означает, что сертификат должен быть связан с одним из доверенных корневых сертификатов на устройстве. This means that the certificate has to chain to one of the trusted roots on the device. По умолчанию в Windows 10 настроено доверие к сертификатам от большинства центров сертификации, предоставляющих сертификаты для подписи кода. By default, Windows 10 trusts certificates from most of the certificate authorities that provide code signing certificates.

Раздел Topic Описание Description
Необходимые условия для подписывания Prerequisites for signing В этом разделе описаны предварительные требования, которые нужно удовлетворить, прежде чем подписывать пакет приложения Windows 10. This section discusses the prerequisites required to sign the Windows 10 app package.
Использование SignTool Using SignTool В этом разделе описано, как подписать пакет приложения с помощью средства SignTool из пакета SDK для Windows 10. This section discusses how to use SignTool from the Windows 10 SDK to sign the app package.
Подписывание пакета MSIX с помощью подписи Device Guard Sign an MSIX package with Device Guard signing В этом разделе описывается, как подписать приложение с помощью подписи Device Guard. This section discusses how to sign your app with Device Guard signing.

Установка меток времени Timestamping

Настоятельно рекомендуется использовать метки времени при подписывании приложения с помощью сертификата. It is highly recommended that Timestamping is used when signing your app with a certificate. Это действие сохраняет подпись, обеспечивая принятие пакета приложений платформой развертывания приложения, даже если срок действия сертификата истек. Timestamping preserves the signature allowing the app package to accepted by app deployment platform even after the certificate has expired. Во время проверки пакета метка времени позволяет проверить подпись пакета с учетом времени подписывания. At the package inspection time, the timestamp allows for the package signature to be validated with respect to the time it was signed. Такие пакеты будут приняты, даже если сертификат недействителен. This allows for packages to be accepted even after the certificate is no longer valid. Пакеты без меток времени будут проверяться с учетом текущего времени и, если сертификат недействителен, Windows не примет такой пакет. Packages that are not timestamped will be evaluated against the current time and if the certificate is no longer valid, Windows will not accept the package.

Ниже описаны разные сценарии подписывания приложения с использованием меток времени и без них. The following are the different scenarios around app signing with/out timestamping:

Приложение подписано без метки времени App is signed without timestamping Приложение подписано с меткой времени App is signed with timestamping
Сертификат действительный Certificate is valid Приложение будет установлено. App will install Приложение будет установлено. App will install
Сертификат недействительный (срок действия истек) Certificate is invalid(expired) Приложение не будет установлено. App will fail to install Приложение будет установлено, так как подлинность сертификата была проверена при подписывании центром меток времени. App will install as the authenticity of the cert was verified at signing by timestamping authority

Если приложение установлено на устройстве, оно будет выполняться даже после истечения срока действия сертификата независимо от того, были ли установлены метки. If the app is successfully installed on a device, it will continue to run even after the certificate expiry regardless of it being timestamped or not.

Режим устройства Device mode

Windows 10 позволяет пользователям выбирать следующие режимы работы устройства в настройках приложения: Windows 10 allows users to select the mode in which to run their device on in the Settings app. «Приложения Microsoft Store», «Неопубликованные приложения» и «Режим разработчика». The modes are Microsoft Store apps, Sideload apps, and Developer mode.

Приложения Microsoft Store — это самый безопасный режим, так как он разрешает установку приложений только из Microsoft Store. Microsoft Store apps is the most secure as it only allows the installation of apps from the Microsoft Store. Приложения в Microsoft Store проходят процесс сертификации, гарантирующий, что приложения безопасны для использования. Apps in the Microsoft Store go through certification process to ensure that the apps are safe for use.

Неопубликованные приложения и Режим разработчика — это менее строгие режимы использования приложений, которые были подписаны с помощью других сертификатов, которые являются доверенными и которые связаны с одним из доверенных корневых сертификатов на устройстве. Sideload apps and Developer mode are more permissive of apps that are signed by other certificates as long as those certificates are trusted and chain to one of the trusted roots on the device. Выбирайте режим разработчика, только если вы являетесь разработчиком, который создает или отлаживает приложения для Windows 10. Only select Developer mode if you are a developer and building or debugging Windows 10 apps. См. подробнее о режиме разработчика. More info about Developer mode and what it provides can be found here.

Как подписать инсталляцию

Зачем нужна цифровая подпись

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

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

Также сравните сообщения, которые показывает UAC при запуске подписанной и неподписанной инсталляции. Сообщение для подписанной инсталляции вызывает больше доверия у пользователя.

Как получить цифровую подпись

Цифровую подпись можно купить у специальных организаций. Например, Comodo, Verisign (Symantec). Сертификат можно приобрести как на один год, так и на несколько лет. Цены начинаются от $100-150 за один год, но через партнеров можно купить сертификат дешевле. Например, KSoftware, являсь стратегическим партнером Comodo, продают сертификаты за $95 в год и есть скидки при его покупке на несколько лет. После того как вы произвели оплату, сотрудники соответствующей организации удостоверятся, что вы являетесь именно тем лицом или организацией на чье имя выдается цифровая подпись. Когда все данные проверены, вам будет дана ссылка, по которой вы загрузите сертификат в Internet Explorer и затем вам нужно сохранить его в виде файла с расширением .pfx, также у вас должен быть пароль, который вы указывали при формировании заявки на сертификат.

Как подписывать программы с помощью цифровой подписи

Для подписывания программ можно использовать бесплатную утилиту signtool.exe от компании Microsoft. Запуск из командной строки с примерно такими параметрами подпишет ваше приложение myapp.exe: signtool.exe sign /a /f «c:\docs\sertificate\mysign.pfx» /p mypassword /t http://timestamp.comodoca.com/authenticode «c:\my application\myapp.exe».

Кроме этого, существует бесплатная программа kSign от ksoftware.net с оконным интерфейсом и с запуском из командной строки. Ниже вы можете взглянуть на скриншоты этой удобной утилиты. Она не требует signtool.exe, signcode.exe и любое другое Microsoft SDK.

Как подписывать инсталляции в инсталляторе CreateInstall

Конечно, можно самостоятельно подписывать инсталляции созданные CreateInstall, но лучше автоматизировать этот процесс. К тому же, наш инсталлятор позволяет подписывать uninstall.exe и update.exe, которые будут потом распакованы при установке вашей программы на компьютер пользователя. Рассмотрим следующее решение с использованием утилиты kSignCMD.exe, которая входит в программу kSign. Создайте .bat файл примерно следующего содержания и сохраните его в секретном месте. Самое главное, чтобы он был доступен в момент сборки вашего дистрибутива. [pfxfile] замените на полный путь к вашему .pfx файлу, а [password] замените на ваш пароль. Команда pause нужна, чтобы вы могли вовремя обнаружить ошибку, которая может возникнуть при попытке подписать приложение. С другой стороны, из-за этой команды вам придется нажимать на какую-нибудь клавишу для продолжения процесса создания дистрибутива.

Сейчас откройте ваш проект в CreateInstall и перейдите к закладке Проект — страница Setup Builder. В поле Application for Code Signing укажите полный путь к созданному нами .bat файлу. Он будет запускаться когда потребуется подписать приложение. Далее укажите параметры для подписывания дистрибутива, деинсталлятора и программы проверки обновлений. Первым параметром должно быть определено общее наименование программы, а вторым , который будет автоматически заменен на полный путь к подписываемому приложению. Например, значения могут быть следующими:

В данном случае, CreateInstall вызовет наш .bat файл для подписывания установки, деинсталлятора и программы обновления, если вы включаете ее в свой проект.

Как подписать программу цифровой подписью

Что такое цифровая подпись для программы

Подпись программы – это процесс добавления специального кода (электронной подписи) к исполняемым файлам и драйверам на этапе разработки.

Электронная подпись позволяет пользователям убедиться, что данная программа:

  1. подписана именно данным автором, и
  2. не была изменена или повреждена после подписания.

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

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

Как правило, подписывается не сам исполняемый файл, а его хэш-сумма. Это позволяет уменьшить размер цифровой подписи.

Подтвердить авторство и отсутствие изменений после подписания можно благодаря тому, что:

  • ­Создать подпись можно только с помощью закрытого ключа, известного только владельцу подписи.
  • ­При любом изменении программы изменяется ее хэш-сумма, и подпись становится недействительной, о чем выдается соответствующее предупреждение.

Для чего используется

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

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

Как получать цифровую подпись для программы

Электронные подписи создаются с помощью алгоритма подписи с открытым ключом, например, RSA. В алгоритме с открытым ключом на самом деле используются два различных ключа: открытый и закрытый. Закрытый ключ знает только его владелец, а открытый ключ доступен всем. В технологии электронной подписи с помощью закрытого ключа генерируется подпись, а соответствующий ему открытый ключ используется для её проверки.

Чтобы получить электронную подпись, необходимо обратиться в специальный центр сертификации (или удостоверяющий центр). Центр сертификации выдаёт ключи (закрытый и открытый) и сертификат (собственно подпись).

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

Сертификат – это электронный документ, который подтверждает, что подпись принадлежит данному лицу. Сертификат содержит следующую информацию:

  • ­уникальный номер;
  • ­дата начала и окончания срока действия;
  • ­данные о владельце;
  • ­уникальный ключ проверки сертификата (открытый);
  • ­название используемой подписи или стандарты, которым она соответствуют;
  • ­название центра сертификации.

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

  • ­срок действия ключа;
  • ­отсутствие ключа в списке отозванных;
  • ­факт выдачи ключа авторизованным центром сертификации.

Помимо выдачи ключей и сертификатов, центр сертификации отзывает истёкшие или скомпрометированные сертификаты и ведёт соответствующие базы данных.

Существует также вариант, при котором разработчик внедряет в код свою собственную, личную подпись. Конечному пользователю в этом случае необходимо получить открытый ключ непосредственно у разработчика, чтобы выполнить проверку ПО при первом запуске.

Кроме программной реализации цифровой подписи, существует также её аппаратная реализация (например, с помощью смарт-карт, USB-токенов и т.п.).

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

Лицензирование программ

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

Читайте также:  Установка zorin рядом windows
Оцените статью