Как подписать программу сертификатом windows

Code Signing в Windows, просто и недорого

Хотел бы рассказать тут о такой важной особенности разработки под Windows как Code Signing. А ведь многие достаточно серьёзные разработчики до сих пор ей не пользуются, и очень зря. Помимо того что при запуске вашего неподписанного приложения появляется противная красная иконка с крестом и неприятным текстом:
«Этот файл не имеет цифровой подписи которая может подтвердить производителя. Вы должны запускать программы только от производителей которым доверяете.»
Это ещё и пропуск на корпоративный рынок.

При запуске неподписанной программы появляется такое окно:
Как подписать программу сертификатом windows. Смотреть фото Как подписать программу сертификатом windows. Смотреть картинку Как подписать программу сертификатом windows. Картинка про Как подписать программу сертификатом windows. Фото Как подписать программу сертификатом windows

А так выглядит окно когда программа подписана:
Как подписать программу сертификатом windows. Смотреть фото Как подписать программу сертификатом windows. Смотреть картинку Как подписать программу сертификатом windows. Картинка про Как подписать программу сертификатом windows. Фото Как подписать программу сертификатом windows

Один важный момент, прежде чем получать сертификат, очень желательно зарегистрировать вашу компанию или ИП в агенстве Dun & Bradstreet и получить DUNS номер. Этот номер очень уважается компаниями которые выдают сертификаты и при предъявлении этого номера, в абсолютном большинстве случаев, более никаких подтверждающих документов не спрашивают. Иначе придётся высылать сканы уставных документов, а иногда и каких-нибудь счетов на компанию, например за телефон. Для получения сертификата на ИП это один из главных шагов. Без этого в случае ИП может вообще ничего не получиться.

Сам процесс подписания программы/инсталлятора достаточно простой и легко автоматизируется, если надо могу описать и его.

Вот собственно и всё. Если вы работаете на рынке программного обеспечения для windows — сертификат это важная и необходимая вещь. Я надо признать и сам стал избегать неподписанных программ после этого.

Источник

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

Подписывание пакета приложения — это обязательный шаг в процессе создания развертываемых пакетов приложений Windows 10. В Windows 10 все приложения должны быть подписаны с помощью допустимого сертификата для подписи кода.

Для успешной установки приложения для Windows 10 пакет не только подписывается, но и настраивается как надежный на устройстве. Это означает, что сертификат должен быть связан с одним из доверенных корневых сертификатов на устройстве. По умолчанию в Windows 10 настроено доверие к сертификатам от большинства центров сертификации, предоставляющих сертификаты для подписи кода.

РазделОписание
Необходимые условия для подписыванияВ этом разделе описаны предварительные требования, которые нужно удовлетворить, прежде чем подписывать пакет приложения Windows 10.
Использование SignToolВ этом разделе описано, как подписать пакет приложения с помощью средства SignTool из пакета SDK для Windows 10.
Подписывание пакета MSIX с помощью подписи Device GuardВ этом разделе описывается, как подписать приложение с помощью подписи Device Guard.

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

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

Ниже описаны разные сценарии подписывания приложения с использованием меток времени и без них.

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

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

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

Windows 10 позволяет пользователям выбирать следующие режимы работы устройства в настройках приложения: «Приложения Microsoft Store», «Неопубликованные приложения» и «Режим разработчика».

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

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

Источник

Создание сертификата для подписи пакета приложения

MakeCert.exe не рекомендуется к использованию. Текущие рекомендации по созданию сертификата см. в разделе Создание сертификата для подписания пакета.

узнайте, как использовать MakeCert.exe и Pvk2Pfx.exe для создания тестового сертификата подписи кода, чтобы вы могли подписывать пакеты приложений Windows.

перед развертыванием пакетной Windows приложения необходимо подписать цифровой подписью. если вы не используете Microsoft Visual Studio 2012 для создания и подписи пакетов приложений, необходимо создать собственные сертификаты для подписи кода и управлять ими. сертификаты можно создавать с помощью MakeCert.exe и Pvk2Pfx.exe из набора драйверов Windows (WDK). Затем можно использовать сертификаты для подписывания пакетов приложений, чтобы их можно было развернуть локально для тестирования.

Это важно знать

Технологии

Предварительные требования

Инструкции

Шаг 1. Определение имени издателя пакета

чтобы сделать сертификат подписи, который вы создадите, использовать с пакетом приложения, который необходимо подписать, имя субъекта сертификата подписи должно соответствовать атрибуту Publisher элемента Identity в AppxManifest.xml для этого приложения. Например, предположим, что AppxManifest.xml содержит:

Эта строка параметра указывается в кавычках и является учетом регистра и пробела.

Шаг 2. создание закрытого ключа с помощью MakeCert.exe

Используйте служебную программу MakeCert для создания самозаверяющего тестового сертификата и закрытого ключа:

Эта команда предложит указать пароль для PVK-файла. Рекомендуется выбрать надежный пароль и защитить закрытый ключ в безопасном месте.

Рекомендуется использовать предлагаемые параметры из предыдущего примера по следующим причинам.

Создает самозаверяющий корневой сертификат. Это упрощает управление тестовым сертификатом.

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

Задает значения расширенного использования ключа (EKU) для сертификата.

Не ставьте пробел между двумя значениями, разделенными запятыми.

Задает дату окончания срока действия сертификата. Укажите значение параметра expirationDate в формате мм/дд/гггг. Рекомендуется выбирать дату истечения срока действия, если это необходимо для целей тестирования, как правило, меньше года. Эта дата окончания срока действия в сочетании с ключом времени существования подписывания может помочь ограничить окно, в котором сертификат может быть скомпрометирован и недоступен.

Дополнительные сведения о других параметрах см. в разделе MakeCert.

шаг 3. создание файла личных данных Exchange (. pfx) с помощью Pvk2Pfx.exe

Файлы MyKey. PVK и MyKey. cer являются теми же файлами, которые MakeCert.exe созданы на предыдущем шаге. С помощью необязательного параметра/по можно указать другой пароль для результирующего PFX-файла; в противном случае PFX-файл имеет тот же пароль, что и MyKey. PVK.

Дополнительные сведения о других параметрах см. в разделе Pvk2Pfx.

Remarks

После создания PFX-файла можно использовать файл с помощью средства SignTool для подписания пакета приложения. Дополнительные сведения см. в разделе как подписать пакет приложения с помощью средства SignTool. Но сертификат по-прежнему не является доверенным для локального компьютера для развертывания пакетов приложений, пока он не будет установлен в хранилище доверенных сертификатов на локальном компьютере. Вы можете использовать Certutil.exe, который поставляется вместе с Windows.

Установка сертификатов с помощью WindowsCertutil.exe

Запустите Cmd.exe от имени администратора.

Выполните следующую команду:

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

CertID — серийный номер сертификата. Выполните следующую команду, чтобы определить серийный номер сертификата:

Соображения безопасности

Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписи кода, необходимые для тестирования пакетов приложений в хранилище сертификатов «Доверенные лица». Немедленно удалите эти сертификаты, когда они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы.

Связанные темы

Примеры

Основные понятия

How to sign an app package using SignTool (Подписывание пакета приложения с помощью SignTool)

Источник

Подписание пакета приложения с помощью SignTool

сведения о подписывании пакета приложения Windows см. в статье подписывание пакета приложения с помощью средства SignTool.

узнайте, как использовать средство SignTool для подписывания пакетов приложений Windows, чтобы их можно было развернуть. средство SignTool входит в состав пакета sdk (Windows Software Development Kit).

все пакеты приложений Windows должны иметь цифровую подпись, прежде чем их можно будет развернуть. хотя Microsoft Visual Studio 2012 и более поздних версий могут подписывать пакет приложения во время его создания, пакеты, созданные с помощью средства упаковщика приложений (MakeAppx.exe) из Windows SDK, не подписываются.

средство SignTool можно использовать только для подписания пакетов приложений Windows на Windows 8 и более поздних версиях или в Windows Server 2012 и более поздних версиях. средство SignTool нельзя использовать для подписывания пакетов приложений в операционных системах нижнего уровня, таких как Windows 7 или Windows Server 2008 R2.

Это важно знать

Технологии

Предварительные требования

средство SignTool, являющееся частью Windows SDK

допустимый сертификат подписи кода, например файл личных данных Exchange (pfx), созданный с помощью средств MakeCert.exe и Pvk2Pfx.exe

Сведения о создании допустимого сертификата подписи кода см. в разделе Создание сертификата для подписи пакета приложения.

Дополнительные сведения

Сертификат, используемый для подписи пакета приложения, должен соответствовать следующим критериям:

Сертификат должен быть допустимым для подписывания кода. Это означает, что оба этих элемента должны быть истинными:

Сертификат содержит закрытый ключ.

Сертификат действителен. Он активен, не просрочен и не был отозван.

Инструкции

Шаг 1. Определение хэш-алгоритма для использования

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

Если для создания пакета приложения использовался упаковщик приложений с конкретным алгоритмом хэширования, то для подписывания пакета используйте тот же алгоритм. Чтобы определить хэш-алгоритм, используемый для подписывания пакета, можно извлечь содержимое пакета и проверить файл AppxBlockMap.xml. Атрибут хашмесод элемента блоккмап Указывает хэш-алгоритм, который использовался при создании пакета приложения. Пример:

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

Значение хашмесодhashAlgorithm для использования
https://www.w3.org/2001/04/xmlenc#sha256SHA256 (по умолчанию. appx)
https://www.w3.org/2001/04/xmldsig-more#sha384SHA384
https://www.w3.org/2001/04/xmlenc#sha512SHA512

Шаг 2. Запуск SignTool.exe для подписания пакета

Подписание пакета сертификатом подписи из PFX-файла

Средство SignTool по умолчанию принимает параметр/FD HASHALGORITHM в значение SHA1, если он не указан, а SHA1 не подходит для подписывания пакетов приложений. Поэтому этот параметр необходимо указать при подписании пакета приложения. Чтобы подписать пакет приложения, созданный с помощью хэша SHA256 по умолчанию, укажите параметр/FD hashAlgorithm в качестве значения SHA256:

Параметр/p Password можно опустить, если используется PFX-файл, который не защищен паролем. Можно также использовать другие параметры выбора сертификатов, которые поддерживаются средством SignTool для подписывания пакетов приложений. Дополнительные сведения об этих параметрах см. в разделе SignTool.

Если вы хотите отметку времени для пакета приложения, необходимо сделать это во время операции входа. Пример:

Установите параметр/tr тиместампсерверурл равным URL-адресу для сервера отметок времени RFC 3161.

Комментарии

В этом разделе обсуждаются ошибки подписывания для пакетов приложений.

Устранение ошибок подписывания пакета приложения

Если код ошибки начинается с 0x8008, например 0x80080206 APPX _ E _ поврежденного _ содержимого, это означает, что подписанный пакет является недопустимым. В этом случае, прежде чем можно будет подписать пакет, необходимо перестроить пакет. Полный список * ошибок 0x8008 см. в разделе коды ошибок COM (безопасность и настройка).

Чаще всего это ошибка 0x8007000b (ошибочный _ Формат ошибки _ ). В этом случае можно найти более подробные сведения об ошибке в журнале событий:

Поиск в журнале событий

Внутренняя ошибка обычно соответствует одному из следующих:

Идентификатор событияПример строки событияПредложение
150ошибка 0x8007000B: имя издателя манифеста приложения (CN=Contoso) должно соответствовать имени субъекта сертификата подписи (CN=Contoso, C=US).Имя издателя манифеста приложения должно точно соответствовать имени субъекта подписи.

[!Note]
Эти имена задаются в кавычках и являются чувствительными к регистру и пробелами.

Соображения безопасности

После подписания пакета сертификат, использованный для подписания пакета, должен быть доверенным для компьютера, на котором будет развернут пакет. Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписи кода, необходимые для тестирования пакетов приложений в хранилище сертификатов «Доверенные лица», и немедленно удалить эти сертификаты, если они больше не нужны. Если вы создаете собственные тестовые сертификаты для подписи пакетов приложений, мы также рекомендуем ограничить привилегии, связанные с тестовым сертификатом. Дополнительные сведения о создании тестовых сертификатов для подписи пакетов приложений см. в разделе Создание сертификата для подписи пакета приложения.

Источник

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

Как подписать программу сертификатом windows. Смотреть фото Как подписать программу сертификатом windows. Смотреть картинку Как подписать программу сертификатом windows. Картинка про Как подписать программу сертификатом windows. Фото Как подписать программу сертификатом windows

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

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

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

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

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

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

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

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

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

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

Как подписать программу сертификатом windows. Смотреть фото Как подписать программу сертификатом windows. Смотреть картинку Как подписать программу сертификатом windows. Картинка про Как подписать программу сертификатом windows. Фото Как подписать программу сертификатом windows

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

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

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

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

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

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *