Как передать умный экран на Win8 при установке подписанного приложения?
Мы разработчик, и у нас есть установщик приложений с цифровой подписью. Когда мы устанавливаем это приложение, оно открывает смарт-экран, который влияет на процесс установки. Это говорит
Windows защитила ваш компьютер
Windows SmartScreen препятствовал запуску нераспознанного приложения. Запуск этого приложения может подвергнуть ваш компьютер риску.
Я думаю, что у Microsoft есть некоторая стратегия для проверки приложения помимо цифровой подписи. У кого-нибудь есть опыт решения этой проблемы, и, пожалуйста, дайте мне подсказку, как решить эту проблему?
9 ответов
Если вы подписали установщик купленным сертификатом от CA, вы должны связаться с CA для объяснения того, почему они не смогли работать с Microsoft, чтобы избавиться от этого предупреждения.
Если сертификат не от CA, а самозаверяющий сертификат, вам придется прибегнуть к CA.
Microsoft уже опубликовала большую часть информации в своем блоге команды Windows,
Лучшие практики
Разработчики по-прежнему должны следовать рекомендациям, которые мы предложили в прошлых сообщениях в блоге. Мы добавили к этому руководству дополнительные возможности распространения приложений через Магазин Windows и возможность подписи кода EV:
- Распространяйте свои приложения через Магазин Windows
Приложения Windows 8 должны пройти процедуру регистрации и проверки приложений для Магазина Windows. Приложения Windows 8 не доступны для проверки репутации приложений SmartScreen или предупреждений в Windows 8.
- Цифровая подпись ваших программ (подпись стандарта или кода EV)
Репутация генерируется и присваивается цифровым сертификатам, а также определенным файлам. Цифровые сертификаты позволяют объединять данные и назначать их одному сертификату, а не многим отдельным программам. Хотя это и не обязательно, программы, подписанные сертификатом для подписи кода EV, могут немедленно установить репутацию с помощью служб репутации SmartScreen, даже если для этого файла или издателя не существует предварительной репутации. Сертификаты для подписи кода EV также имеют уникальный идентификатор, который облегчает поддержание репутации при продлении сертификатов. Только сертификаты Authenticode, выданные центром сертификации, который является участником Программы корневых сертификатов Windows, могут установить репутацию.
В настоящее время Symantec и DigiCert предлагают сертификаты для подписи кода EV.
- Не подписывайте и не распространяйте вредоносный код
Распространение кода, обнаруженного как вредоносный, удалит репутацию из файла, а также любую репутацию из соответствующего цифрового сертификата - даже если он подписан сертификатом для подписи кода EV.
- Подать заявку на сертификацию Windows Logo или Windows 8 Desktop App
Узнайте больше об этих программах здесь: Сертификация Windows 8 Desktop App (требуется для представлений Магазина Windows) Программа Windows Logo
Мы только что прошли весь процесс перехода от старого сертификата Authenticode к новому (не сертификату EV, а простому сертификату, который можно использовать в нашем процессе автоматической сборки).
Microsoft больше не предоставляет никаких средств для переноса репутации из существующего сертификата в новый. Так что не пытайтесь вызвать их поддержку. Вы просто потратите много времени и энергии. И они не смогут помочь.
Microsoft утверждает, что если старые и новые сертификаты имеют одинаковое текстовое содержание, репутация устанавливается быстрее. Более конкретно, вот ответ, который я получил от команды поддержки функции репутации фильтра SmartScreen®:
Обратите внимание, что всякий раз, когда вы продлеваете сертификат с известной репутацией, вы, скорее всего, увидите некоторые предупреждения во время первоначальной загрузки файлов, подписанных обновленным сертификатом. Однако известная репутация в обновленном сертификате обычно устанавливается быстрее, чем в новом сертификате. Несмотря на то, что обновленный сертификат устанавливает репутацию, пользователи все равно могут щелкнуть, чтобы запустить или сохранить загрузку. Для этого они выбирают Действия | Дополнительные параметры | Запустите в любом случае из диспетчера загрузки.
Лучший способ гарантировать, что SmartScreen не предупредит пользователей, - это запустить Windows App Certification Kit (WACK), который должен быть включен в загрузку Windows SDK:
После запуска тестов WACK объясняет, как продолжить:
Загрузите XML-результат успешной сертификации приложения на https://sysdev.microsoft.com/. Через несколько дней SmartScreen узнает о цифровой подписи, используемой для сертифицированной программы, и больше не будет предупреждать пользователей о загрузке.
Примечание. Мы не смогли сертифицировать наше приложение по последним обновлениям Windows 8.1, и нам пришлось использовать чистую установку Windows 8.1, чтобы WACK успешно проверил все наши программы.
Я долго искал, поэтому поделюсь тем, что нашел.
Я не нашел документации об этой функции в Windows 8 от Microsoft, но, возможно, я просто искал не в том месте.
В большинстве статей, которые я прочитал, обсуждается, что фильтр SmartScreen работает следующим образом:
- Перед запуском установщика или исполняемого файла Windows 8 обращается к базе данных.
- База данных может сообщить, была ли эта программа:
- зарегистрировано как вредоносное / фишинговое (и проверено сотрудником Microsoft).
- используется / управляется многими людьми.
Если достаточное количество людей запустили этот установщик, не сообщая о его вредоносности, в конечном итоге эта программа будет помечена как безопасная, и другие пользователи не получат раздражающее сообщение.
некоторые источники: ( здесь) ( здесь)
Информация, отправляемая Microsoft, когда пользователь устанавливает программу, включает в себя IP-адрес, хэш установщика и цифровую подпись и, возможно, имя файла приложения. ( см. здесь)
Сотрудники Microsoft будут иметь прямой доступ к базе данных для добавления и пометки всех приложений Microsoft.
Возможно, Microsoft разработала способ предварительной сертификации вашего установщика вместе с ними, если нет, то вам просто нужно подождать, пока установщик запустит достаточное количество людей. (но не уверен, сколько это будет).
Я только что прошел этот процесс, и я добавлю немного информации к этому.
1) Получить EV. Это стоит того. В следующий раз, когда вы обновите свои сертификаты, обновите сертификат EV. Цена на 100 долларов больше в год. Сертификаты EV считаются более безопасными, потому что их сложнее украсть. При выдаче вам будет выдан аппаратный токен для завершения подписи. К сожалению, последний знак не совместим с автоматизированными сборками.
Это не так ужасно, как кажется. Они предоставят вам второй сертификат для подписи ваших исполняемых файлов (внутри установщика), который остается совместимым с автоматизацией. Подпись на установщике должна быть подписана вместе с аппаратным токеном.
2) Если вы не хотите получать сертификат EV, вам нужна репутация. Если вы выполняете обновление, Microsoft перенесет репутацию со старого сертификата на новый. Вы должны связаться со службой технической поддержки MSDN, и примерно через неделю это будет сделано. Я представил свои старые и новые установщики - со старыми и новыми сертификатами - и они исправили это.
3) Если это ваш первый сертификат, вы застряли с SmartScreen, пока не получите репутацию. Вы, вероятно, должны получить сертификацию своего приложения через sysdev.microsoft.com. Но на самом деле неизвестно, сколько загрузок вам нужно, чтобы заработать положительную репутацию в Microsoft.
Это мой опыт.
Поскольку Windows 8.1 вышла.
Microsoft деактивировала все Стандартные сертификаты подписи кода, чтобы доверять им, когда вы загружаете их через Интернет на свой ПК и пытаетесь установить их, но приложение Стандартные сертификаты подписи кода работает, если вы распространяете свое приложение через USB или CD-ROM.
Не используйте
signtool.exe
проверять (signtool.exe verify /pa mysetup.exe
покажет успех, но не получится, когда другие пользователи загрузят его и попытаются установить всплывающее окно SmartScreen.
Используйте Windows App Certification Kit (WACK)
- Это стандартные сертификаты подписи кода мертвы. Означает, что если у вас есть стандартный сертификат подписи кода, он больше не будет работать надежно, как это было в прошлом, даже если Windows App Certification Kit (WACK) показывает PASS with WARNING, это не означает, что его проверка на 100% успешна
Вы должны приобрести сертификат EV ( https://www.globalsign.com/en/code-signing/)
Итак, чтобы быть на 100% успешным, следите за подачей ложки:
Шаг 1: перейдите на https://sysdev.microsoft.com/ и войдите
а) Создать учетную запись компании> далее
б) Загрузите файл winqual.exe, который представляет собой zip-файл, предоставленный корпорацией Майкрософт, теперь подпишите файл winqual.exe своим стандартным сертификатом или сертификатом EV и нажмите кнопку "Далее", чтобы загрузить файл для проверки.
В моем случае это не удалось, потому что у меня есть стандартный сертификат, который Microsoft больше не разрешает. Таким образом, все, что вам нужно сделать сейчас, это купить лицензию EV, иначе вы облажались и можете потратить всю свою жизнь на решение этой проблемы без какой-либо подсказки.
Я проверил решение сертификата EV, и оно работает.
К сожалению, я также упомяну, что сертификаты EV несовместимы с TeamBuild, который выполняет подписывание в контексте службы. Для EV-сертификатов требуется аппаратный токен, который взаимодействует с поставщиком криптографических услуг, предоставляемым SafeNet, Inc для использования со всеми авторизованными поставщиками EV-сертификатов (VeriSign и DigiCert).
При подписании драйверы из Safenet запрашивают пароль, который несколько несовместим с выполнением в контексте службы. Кроме того, Safenet обеспечивает защиту, которая не позволяет подписывать что-либо, кроме самой консоли. Вы даже не можете подписаться из сеанса удаленного рабочего стола. Таким образом, подписание изнутри Teambuild в лучшем случае проблематично, а в худшем - невозможно.
Я работал с Microsoft, и они не смогли обеспечить обходной путь для подписания или любого другого способа достижения мгновенной репутации под SmartScreen.
К сожалению, у меня недостаточно представителей, чтобы просто прокомментировать один из приведенных выше ответов. Однако, если вы указываете частичное доверие для своего опубликованного приложения (я выбрал зону Интернета) и у вас есть сертификат для подписи кода, предупреждение на экране не отображается (проверено на Win10).
Msgstr "Версия файла не совместима с версией Windows, которую вы используете". На сервере Windows 2008 нет кнопки "Подробнее", чтобы выбрать установку в любом случае.
Поскольку мы разрабатываем программное обеспечение для настольных систем Windows (не "Приложения") с использованием продуктов сторонних производителей (Delphi) и используем Innosetup для нашего установщика, проверка приложения не имеет смысла. Он сидит в течение 30 минут, ничего не делая, мы просто запускаем приложение, затем закрываем приложение вручную, и он генерирует отчет о прохождении.
Мы подписываем все наши выпуски и каждый исполняемый файл в них.
Когда мы загружаем XML в Microsoft, сертифицированный XML размещается на сайте, не связанном с нашей основной учетной записью разработчика, без возможности опубликовать его в Магазине Microsoft. 45 минут впустую за приложение.
Я подписываю свое приложение в автоматическом режиме, используя сертификат EV на токене ( GlobalSign) . Используйте файл.bat. в файле ".bat" введите ex: (для sha1)
SignTool.exe sign /n "Exact Enterprise name in the cert - token" /t "http://timestamp.globalsign.com/scripts/timstamp.dll" "c:\Patch_to_file\Filename.exe"
"Точное имя предприятия в сертификате-токене" должно быть точным именем в сертификате (токене)