Как передать смарт-экран на Win8 при установке подписанного приложения?

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

Windows защитила ваш компьютер

Windows SmartScreen предотвратила запуск нераспознанного приложения, Запуск этого приложения может привести к риску вашего ПК.

Я думаю, что у Microsoft есть определенная стратегия проверки приложения, помимо цифровой подписи. У кого-нибудь есть опыт для этой проблемы, и, пожалуйста, дайте мне подсказку, чтобы исправить эту проблему?

Ответ 1

Если вы подписали установщик с приобретенным сертификатом из ЦС, вы должны связаться с ЦС для объяснения причин, по которым они не смогли работать с Microsoft, чтобы избавиться от этого предупреждения.

Если сертификат не принадлежит CA, а самозаверяющий сертификат, вам придётся обратиться в CA.

В Microsoft уже опубликована большая часть информации, опубликованной в блоге команды Windows,

http://blogs.msdn.com/b/ie/archive/2012/08/14/microsoft-smartscreen-amp-extended-validation-ev-code-signing-certificates.aspx

Лучшие практики

Разработчики должны по-прежнему придерживаться лучших практик, предложенных в предыдущих блогах. Мы добавили к этому руководству дополнительные возможности распространения приложений через Windows Store и возможность подписания кода EV:

  • Распространяйте свои приложения через Windows Store

Приложения Windows 8 необходимо передать разработчику Windows Store на рассмотрение и проверку приложений. Приложения Windows 8 не имеют возможности для проверок или предупреждений о репутации приложений SmartScreen в Windows 8.

  • Цифровая подпись ваших программ (стандартная или EV-подпись)

Репутация создается и присваивается цифровым сертификатам, а также определенным файлам. Цифровые сертификаты позволяют агрегировать данные и присваивать их одному сертификату, а не многим отдельным программам. Хотя это и не обязательно, программы, подписанные сертификатом подписи EV, могут сразу же установить репутацию в службах репутации SmartScreen, даже если для этого файла или издателя не существует прежней репутации. Сертификаты подписи кода EV также имеют уникальный идентификатор, который упрощает поддержание репутации в продлении сертификата. Только сертификаты Authenticode, выданные центром сертификации, являющимся членом Корневой программы сертификации Windows, могут создавать репутацию.

В настоящее время Symantec и DigiCert предлагают сертификаты подписи кода EV.

  • Не подписывайте или распространяйте вредоносный код

Распространяющийся код, обнаруженный как вредоносный, удалит репутацию из файла, а также любую репутацию из соответствующего цифрового сертификата - даже если подписан с сертификатом подписи EV.

  • Применить для логотипа Windows или Windows 8 Desktop App Certification

Подробнее об этих программах читайте здесь: Windows 8 Desktop App Certification (требуется для представлений в Windows Store) Программа логотипа Windows

Ответ 2

Мы просто прошли весь процесс перехода от сертификата старого Authenticode к новому (не EV-сертификат, просто простой сертификат, который можно использовать в наш процесс автоматической сборки).

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

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

Обратите внимание, что всякий раз, когда вы обновляете сертификат с известной репутацией, вы, вероятно, увидите некоторые предупреждения во время начальной загрузки файлов, подписанных с обновленным сертификатом. Однако известная репутация обновленного сертификата обычно устанавливается быстрее, чем на новом сертификате. Хотя обновленный сертификат устанавливает репутацию, пользователи все равно могут щелкнуть, чтобы запустить или сохранить загрузку. Для этого они выбирают Actions | Дополнительные параметры | Запустите Anywhere из диспетчера загрузки.

Лучший способ гарантировать, что SmartScreen не будет предупреждать пользователей, - запустить Комплект сертификации Windows App (WACK), который должен быть включен в загрузку Windows SDK:

Windows App Certification Kit

После запуска тестов WACK объясняет, как действовать:

Final Report - Validation passed

Загрузите XML-результат успешной сертификации приложения в https://sysdev.microsoft.com. Через несколько дней SmartScreen будет знать о цифровой сигнатуре, используемой для сертифицированной программы, и больше не будет предупреждать пользователей о загрузке.

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

Ответ 3

Я искал какое-то время, поэтому я расскажу, что я нашел до сих пор.

Я не нашел никакой документации об этой функции в Windows 8 от Microsoft, но я могу просто искать не то место.

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

  • Перед запуском установщика или исполняемого файла, который был загружен, Windows 8 консультируется с базой данных.
  • База данных может сообщить, была ли эта программа:
    • сообщается как вредоносный/фишинг (и проверен сотрудниками Microsoft).
    • используется/выполняется многими людьми.

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

некоторые источники: (здесь) (здесь)

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

Сотрудники Microsoft имели бы прямой доступ к базе данных для добавления и маркировки всех приложений Microsoft.

Возможно, Microsoft установила способ предварительной сертификации вашего установщика вместе с ними, если нет, вам просто нужно подождать, пока достаточное количество людей не запустит программу установки. (но не уверен, сколько это будет).

Ответ 4

Я только что прошел этот процесс, и я добавлю некоторые лакомые кусочки информации.

1) Получите EV. Это того стоит. В следующий раз, когда вы обновите сертификаты, перейдите на сертификат EV. Цена составляет около 100 долларов США в год. Сертификаты EV считаются более безопасными, потому что их сложно воровать. Когда вы будете выданы вам, вам будет выдано аппаратное токеновое устройство для завершения знака. К сожалению, окончательный знак несовместим с автоматическими сборками.

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

2) Если вы не хотите получать сертификат EV, вам нужна репутация. Если вы обновляете, Microsoft переведет репутацию из вашего старого сертификата на новый. Вы должны обратиться в службу технической поддержки MSDN, и примерно через неделю это будет сделано. Я отправил своих старых и новых инсталляторов - со старыми и новыми сертификатами - и они исправили это.

3) Если это ваш первый сертификат, вы застряли в SmartScreen, пока не получите репутацию. Вероятно, вы должны получить подтверждение своего приложения через sysdev.microsoft.com. Но на самом деле не известно, сколько загрузок вам нужно, прежде чем вы получите положительную репутацию у Microsoft.

Это мой опыт.

Ответ 5

Так как Windows 8.1 отсутствует.

  • Microsoft дезактивировала все сертификаты подписи стандартного кода, которым можно доверять, когда вы загружаете их через интернет на свой компьютер и пытаетесь их установить, но приложение Standard Signing Signing Certificate работает, если вы распространяете приложение через USB или CD-ROM.

  • Не используйте signtool.exe для проверки (signtool.exe verify /pa mysetup.exe покажет успех, но он не удастся, когда другие пользователи загрузят его, и попытка установить всплывающее окно SmartScreen будет продолжать отображаться)

Использовать набор сертификатов приложений Windows (WACK)

enter image description here

  • Эти стандартные сертификаты подписи кода мертвы. Если у вас есть стандартный сертификат подписи кода, он не будет работать более надежно, как это было в прошлом, даже несмотря на то, что набор сертификатов приложений Windows (WACK) показывает PASS с WARNING, не означает, что его 100% проверка успеха

enter image description here

Вам необходимо приобрести сертификат EV (https://www.globalsign.com/en/code-signing/)

Итак, чтобы быть на 100% успешным, следуйте за ложкой:

Шаг 1: перейдите в https://sysdev.microsoft.com и войдите в систему

a) Создайте учетную запись компании > next

b) Загрузите файл winqual.exe, который является zip файлом, предоставленным Microsoft, теперь подпишите winqual.exe со стандартным сертификатом или сертификатом EV, а затем нажмите кнопку "Далее", чтобы загрузить файл для проверки.

В моем случае это не получилось, потому что у меня есть стандартный сертификат, который Microsoft перестает разрешать больше. Таким образом, все, что вам нужно сделать, это купить лицензию EV, иначе вы ввернуты, и можете потратить свою жизнь на решение этой проблемы без каких-либо подсказок.

enter image description here

Ответ 6

Я тестировал решение EV cert, и он работает.

К сожалению, я также упомянул, что сертификаты EV несовместимы с TeamBuild, который выполняет подписание под контекстом службы. Сертификаты EV требуют аппаратного токена, который взаимодействует с поставщиком криптографических услуг, который предоставляется SafeNet, Inc для использования со всеми авторизованными поставщиками сертификатов EV (VeriSign и DigiCert).

При подписании драйверов из Safenet будет запрашиваться пароль, который несколько несовместим с исполнением в контексте службы. Кроме того, Safenet обеспечивает защиту, которая предотвращает подписание чего-либо, кроме собственно консоли. Вы даже не можете подписываться из сеанса удаленного рабочего стола. Таким образом, подписание изнутри Teambuild проблематично в лучшем случае и невозможно в худшем случае.

Я работал с Microsoft, и они не смогли обеспечить обходной путь для подписания или каким-либо другим способом добиться мгновенной репутации в SmartScreen.

Ответ 7

К сожалению, мне не хватает репутации, чтобы просто прокомментировать один из приведенных выше ответов. Однако, если вы указываете частичное доверие для своего опубликованного приложения (я выбрал зону Интернета) и имею сертификат соответствия кода на месте, предупреждение о интеллектуальном экране не отображается (отмечено на Win10).

Ответ 8

Я подписываю свое приложение в автоматическом режиме, используя сертификат 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"

"Точное имя предприятия в сертификате - токен" должно быть точным именем, которое находится в сертификате (токене)

Ответ 9

"Версия файла несовместима с версией окон, которые вы используете". На сервере Windows 2008 нет кнопки "Дополнительная информация", чтобы выбрать установку в любом случае.

Когда мы разрабатываем программное обеспечение для Windows (не "Apps" ) с использованием продуктов, отличных от Microsoft (Delphi), и используем Innosetup для нашего установщика, проверка приложения бессмысленна. Он сидит там в течение 30 минут, ничего не делая, мы просто запускаем приложение, а затем закрываем приложение вручную и генерируем отчет о пропуске.

Мы кодируем все наши выпуски и каждый исполняемый файл внутри них.

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