Как сделать так, чтобы фильтр SmartScreen доверял самозаверяющему сертификату

Фильтр SmartScreen от Microsoft под Windows 8 - худший кошмар для мелких разработчиков.

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

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

Недавние изменения в фильтре SmartScreen (и его включение в качестве «функции» ОС в Windows 8) ясно дают понять, что Microsoft хочет, чтобы вы купили сертификат подписи кода вместо того, чтобы творчески работать над проблемой, которую они создали для вас. Кто-нибудь обнаружил новый метод доверия издателям, которые по умолчанию используют свои самозаверяющие сертификаты подписи кода (т. Е. Не отображают запросы)? Что могут сделать конечные пользователи, если не считать полного отключения фильтра, чтобы фильтр SmartScreen знал, что он всегда доверяет самозаверяющему сертификату?

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

ОБНОВЛЕНИЕ: я думаю, что нашел обходной путь! Из MSDN, фильтр SmartScreen можно отключить в Windows 8 и Internet Explorer 10 для сайтов, перечисленных как «Надежные сайты». Если бы кто-нибудь мог убедиться, что этот метод работает для программ установки, загружаемых и запускаемых с надежного сайта в Windows 8, это было бы очень полезно и помогло бы многим независимым поставщикам программного обеспечения и внутренним командам разработчиков. Это также было бы обходным путем, чтобы ответить на этот вопрос. Надежные сайты можно настроить с помощью групповой политики, так что оттуда это будет просто.

Программно отключить фильтр SmartScreen для зоны надежных сайтов можно, установив либо HKLM \ Software \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 для машины, либо HKCU \ Software \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 для пользователя на 0, а добавление доверенного сайта в зону надежных сайтов можно выполнить, как показано в этот вопрос.

Может ли кто-нибудь убедиться, что предлагаемый мной обходной путь работает в Windows 8 для неподписанного или самозаверяющего исполняемого файла, загруженного с надежного сайта? Я сам не использую Windows 8, потратив свой бюджет на обновление ОС на плату за сертификаты.


person Shannon Cook    schedule 21.03.2013    source источник
comment
Возможно, эта страница может дать вам некоторую полезную информацию msdn.microsoft.com/en-us/library/ie/jj542450(v=vs.85).aspx   -  person Spadar Shut    schedule 25.03.2013
comment
После беглого просмотра ссылки кажется, что это может быть полезно. Спасибо за инициативу. Я обновлю этот пост, когда у меня будет больше времени на изучение вашей ссылки.   -  person Shannon Cook    schedule 26.03.2013
comment
К сожалению, ваша ссылка не приближает меня к решению. Мне интересно, является ли игнорирование хранилища доверенных издателей ошибкой в ​​последней версии фильтра SmartScreen или это намеренно делает хранилище доверенных издателей бесполезным и вынуждает разработчиков приобретать сертификаты у членов доверенных корневых пользователей Microsoft.   -  person Shannon Cook    schedule 09.04.2013
comment
размещая не в качестве ответа, вы можете: а) минимизировать затраты, переключившись на startssl (60 долларов США / 2 года), б) опубликовать достаточно надежный модуль обновления один раз и передать ему обновления, встраивая свою собственную логику проверки сертификата ...   -  person wizzard0    schedule 15.04.2013
comment
Wizzard0, общесистемное использование фильтра SmartScreen в Windows 8 приводит к сбою сборки по вашему собственному методу. Самозаверяющие сертификаты / сертификаты, выпущенные частным ЦС, приемлемы для большинства применений, но не для подписи кода. Я пробовал использовать сертификаты подписи кода, выданные из настраиваемых корневых источников, установленных на машине конечного пользователя, но фильтр по-прежнему выдает предупреждения, а сертификаты вообще не зарабатывают репутацию. Это означает, что предупреждения являются постоянными и, насколько мне известно, их невозможно обойти. Это похоже на функцию, предназначенную для принудительной покупки сертификатов, а не для защиты от вредоносных программ.   -  person Shannon Cook    schedule 15.04.2013
comment
Я имею в виду, когда вы реализуете свою собственную логику обновления и очищаете идентификатор зоны из загруженных файлов, тогда фильтр SmartScreen не может быть активирован. Или я ошибаюсь в этом?   -  person wizzard0    schedule 19.04.2013
comment
Под вашей собственной логикой обновления я предполагаю, что вы имеете в виду программу запуска / обновления для одной программы, подписанной EV или уже установленной в системе конечного пользователя. Это работает, только если программа уже установлена, поэтому это не функциональное решение. Представьте себе компанию с более чем 500 системами Windows 8, которая использует несколько приложений, созданных несколькими издателями. Раньше администраторы имели возможность распространять самозаверяющие сертификаты подписи кода издателей с помощью групповой политики в доверенное хранилище, чтобы обойти предупреждения. SSF Windows 8 игнорирует хранилище доверенных издателей.   -  person Shannon Cook    schedule 25.04.2013
comment
Что касается удаления идентификатора зоны, я решил добавить ссылку на ответ о том, как это сделать, в справочных целях. stackoverflow.com/ questions / 6374673 / Мой текущий обходной путь - это обучение, рассказывающее пользователям, как пройти через лабиринт крошечных скрытых ссылок, чтобы заставить файлы запускаться. Мне нравится Smartscreen Filter в целом, но невозможность настроить его так, чтобы он доверял издателю, хранящемуся в хранилище сертификатов Trusted Publishers, у меня возник соблазн побудить людей полностью отключить его или придерживаться Windows 7.   -  person Shannon Cook    schedule 25.04.2013
comment
Наверное, глупый вопрос, а можно ли отключить фильтр смарт-экрана во время установки?   -  person N_A    schedule 29.04.2013
comment
Вы можете сказать конечному пользователю сделать это, но, насколько мне известно, вы не можете сделать это программно. Кроме того, это не совсем решает проблему игнорирования магазина доверенных издателей. Даже если бы вы могли, вы не смогли бы отключить его с помощью устанавливаемой программы. Если кто-нибудь знает способ программно отключить / включить его, это может быть полезно для программ обновления.   -  person Shannon Cook    schedule 30.04.2013
comment
Установка значения HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ System REG_DWORD EnableSmartScreen на 0 временно отключит его, но для этого потребуется предварительно установленная программа обновления / загрузки, работающая с правами администратора. Изменение настроек реестра SmartScreen, вероятно, также приведет к тому, что SmartScreen пометит вашу программу как вредоносную. Кроме того, для внесения изменений в эту запись реестра необходимо выйти из системы и снова войти в нее.   -  person Shannon Cook    schedule 30.04.2013
comment
Официально проблема с сертификатами, добавленными в доверенное хранилище, заключается просто в том, что у них не было времени заработать репутацию с помощью службы SmartScreen. Тем не менее, похоже, что я нигде не могу найти никаких данных о том, как строить репутацию и сколько времени это занимает. См. cio.com.au/article/433760/.   -  person Moshe Katz    schedule 01.05.2013
comment
Надежное хранилище - это место, где вы устанавливаете сертификаты от издателей, которым вы (то есть конечный пользователь или администратор групповой политики) доверяете на 100%. Эти сертификаты должны освобождаться от необходимости создавать репутацию. Я считаю, что это серьезная ошибка / недосмотр / недостаток дизайна в текущей версии фильтра SmartScreen. После того, как вы решили довериться кому-то и приложили усилия для установки его сертификата в хранилище доверенных издателей, между вами и издателем установились доверительные отношения, и Microsoft не должна вмешиваться в эти отношения вообще.   -  person Shannon Cook    schedule 02.05.2013


Ответы (5)


Цитата из Веб-сайт MSDN:

Недоброжелатели могут утверждать, что SmartScreen «заставляет» разработчиков тратить деньги на сертификаты. Следует подчеркнуть, что сертификаты подписи кода EV не требуются для создания или поддержания репутации с помощью SmartScreen. Файлы, подписанные стандартными сертификатами подписи кода, и даже неподписанные файлы продолжают завоевывать репутацию, как и с тех пор, как в прошлом году в IE9 была введена функция Application Reputation. Однако наличие сертификата подписи кода EV является убедительным показателем того, что файл был подписан субъектом, который прошел строгий процесс проверки и был подписан с помощью оборудования, что позволяет нашим системам установить репутацию для этого объекта быстрее, чем неподписанный или неподписанный. -EV программ, подписанных кодом.

Другими словами, проверка EV (платная) - это всего лишь один фактор в большом алгоритме, который определяет, отображается ли предупреждение SmartScreen или нет. Если у вас много людей, которые загружают вашу программу, или если ссылка для загрузки программы не менялась в течение некоторого времени, вы можете немного поработать, чтобы ваша программа не отображала предупреждение. Кроме того, подписав свой код цифровой подписью, вы можете повысить репутацию приложения. Это прямо с веб-страницы Microsoft по этой теме.

person William    schedule 01.05.2013
comment
Это не совсем ответ на мой вопрос. Я попросил обходной путь. Ваш ответ скорее политический, чем технический. Не могли бы вы отредактировать его, чтобы включить обходной путь, или удалить его? Кроме того, сертификаты для подписи кода, не выпущенные участниками программы Microsoft Trusted Root, вообще не получают репутации, поэтому лучше не подписывать (с точки зрения репутации), если у вас ее нет. Неподписанные исполняемые файлы, как ни странно, действительно зарабатывают репутацию. - person Shannon Cook; 03.05.2013
comment
Обхода нет, я изложил несколько тактик, которые можно использовать для поднятия репутации. Я исследовал это в течение трех часов, когда только вышла Windows 8, будучи разработчиком-любителем. Вы можете использовать указанную тактику, чтобы получить более высокую репутацию с их услугами, но Microsoft не предлагает обходных путей. Это самое близкое из возможных. - person William; 03.05.2013
comment
Это все еще не ответ. Лучше оставить вопрос без ответа, пока не будет найдено обходное решение. У меня нет обходного ответа от это сообщение в блоге, когда я разместил этот вопрос. Пожалуйста, удалите свой ответ. Это политический, а не технический, и даже не пытается ответить на вопрос. Установка в магазине Trusted Publishers - это обходной путь для всего, кроме Windows 8, и, несомненно, будет обнаружен другой обходной путь и для Windows 8. - person Shannon Cook; 03.05.2013
comment
Когда срок награды в 150 баллов истечет, вы получите награду по умолчанию в размере половины, даже если вы не ответили на вопрос. Если вы захотите убедиться, что мой собственный ответ работает с Windows 8, я буду рад вручить вам полную награду. В противном случае удалите свой ответ, чтобы не воспользоваться истечением срока вознаграждения таким образом. - person Shannon Cook; 03.05.2013
comment
Технически ответ - это просто что-то написанное или сказанное в ответ на вопрос. Это вопрос, верно? :) Задавая вопрос, вы не всегда можете получить тот ответ, на который надеялись. Ответ Уильяма подтвердил, что единого решения нет. (например, сделайте это одно, и это решит вашу проблему.) Теперь, когда вы это знаете, вы (вероятно) перестанете искать другой ответ. Знание, что обходного пути не существует, - ценный ответ. - person Tyler Montney; 16.07.2015
comment
Это правильный ответ, но он не сформулирован четко. 1) Non-EV от CA в порядке, и сегодня я вижу, что он стоит около 110 долларов в год от Comodo. 2) Судя по всему, даже самоподписанный сертификат будет работать после того, как нарастет репутация. 3) Все равно запускать - следует отметить, что пользователи МОГУТ обходить экран с ворчанием [rawinfopages.com/tips/2014/10/. Я прочитал длинный OP и изменил заголовок вопроса, чтобы отразить намерение автора. - person Todd; 06.05.2017
comment
Microsoft вынимает деньги из наших карманов с помощью этой смелой тактики, которая ясно показывает, что ее намерение состоит в том, чтобы зарабатывать деньги, а не защищать своих пользователей. Я согласен с OP, это не ответ, и Уильяму следовало уважать желание удалить его, учитывая, что за вопрос назначена награда. Когда вы сертифицированные разработчики Microsoft утратили хакерский дух? - person F.H.; 14.12.2017
comment
Я нашел этот ответ полезным и рад, что вы его не удалили. - person Drew Noakes; 16.07.2018
comment
К сожалению, обе ссылки не работают. Если кто-то может указать новое расположение этих документов, это будет полезно. - person Bram; 12.05.2020

Используя 90-дневную пробную версию Windows 8 от Microsoft, я смог убедиться, что мой обходной путь действительно работает. Если вы хотите заплатить за сертификат подписи кода один раз и только один раз вместо ежегодной оплаты, этот метод должен работать и для вас, но я не могу дать никаких гарантий. Мое решение рассчитано на каждую машину, но должно быть легко преобразовано в работу для каждого пользователя.

Это мое решение:

  1. Настройте собственную инфраструктуру сертификатов.
  2. Публикуйте копии своего корневого сертификата ЦС, любых промежуточных сертификатов ЦС, выпущенных вашим корневым центром, и любых сертификатов подписи кода, выпущенных промежуточным ЦС, на ваш веб-сайт в виде файлов .cer.
  3. Установите на свой веб-сайт сертификат SSL, выданный вашим корневым центром сертификации.
  4. Create an installer/downloader application that performs the following tasks:
    • Installs the root CA certificate (from your website, step 2) into the Trusted Root Certification Authorities store for the end user's machine.
    • Отключает фильтр SmartScreen для интернет-зоны «Надежные сайты», задав для HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 значение 0.
    • Добавляет ваш веб-сайт на карту зоны, добавляя разделы реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ZoneMap \ Domains \ yourdomain.com \ yoursubdomain.
    • Сопоставляет ваш домен с зоной надежных сайтов, создав DWORD с именем https со значением 2 в ключе, созданном на предыдущем шаге.
  5. Purchase a code signing certificate from a member of Microsoft's Trusted Root program, preferably an EV certificate.
    • Before your purchase, make sure the certificate and timestamping scheme used by the CA for your code signing certificate will not result in OID's 1.3.6.1.4.1.311.10.3.13 or 1.3.6.1.4.1.311.10.3.14, as these would make the signature expire when the certificate expires, whether it's timestamped or not.
  6. Подпишите и поставьте метку времени для вашего загрузчика / установщика с сертификатом, приобретенным на шаге 5. Убедитесь в отсутствии ограничений срока службы для подписи. Если все в порядке, вы можете положить купленный сертификат для подписи кода в надежное место и заблокировать его.
  7. Опубликуйте свой загрузчик / установщик на своем веб-сайте. Сделайте это обязательным условием загрузки для всех ваших продуктов.
  8. С этого момента вы можете использовать сертификаты подписи кода (и другие сертификаты, если на то пошло), выпущенные вашими собственными внутренними центрами сертификации, и фильтр SmartScreen не будет мешать.

Наихудшим предупреждением, которое я получал при использовании этого метода, было: «Этот тип файла может нанести вред вашему компьютеру». Это типичное «Вы загружаете исполняемый файл!» предупреждение. Он не скрывает параметр «Выполнить» и не отображается для развертываний ClickOnce с использованием веб-страницы начальной загрузки, созданной при нажатии кнопки «Опубликовать» в VS2010.

Спасибо за все комментарии и ссылки.

person Shannon Cook    schedule 20.05.2013
comment
Я не голосовал против, но шаг 4 звучит странно. а) как бы вы установили этот установщик? (как предотвратить то, что SmartScreen помечает его как небезопасный?) б) не кажется хорошей идеей настраивать параметры реестра пользователя для фильтра SmartScreen без его разрешения. - person Marek; 07.04.2014
comment
Извините за задержку с ответом; налоговый сезон. A) Шаг 5 заставляет установщика работать с фильтром. Б) Изменения в реестре будут производиться С разрешения пользователя, поскольку разрешение предоставляется пользователем, когда он принимает лицензионное соглашение для программного обеспечения. По сути, вы настраиваете вещи так, как они должны были быть установлены изначально. Если пользователь решает доверять издателю и своему веб-сайту (т. Е. Устанавливает сертификат издателя в надежном хранилище), то SmartScreen должен доверять издателю. - person Shannon Cook; 21.04.2014
comment
Шаг 5 также требует потратить кучу денег. - person Damian Yerrick; 01.10.2015
comment
Я немедленно удалю любое приложение, которое вмешивается в настройки безопасности моей системы, и навсегда заблокирую все приложения указанного разработчика. - person Oliver Weichhold; 06.03.2017

Я нашел действительно простой способ обойти фильтр даже без прав администратора. Что вам нужно сделать:

  1. Открыть блокнот
  2. Введите следующую строку: @%*
  3. Сохраните файл как "SkipSmartScreen.bat" (да, с кавычками) в той же папке, что и ваше приложение. Вы можете переименовать командный файл позже
  4. Чтобы запустить приложение, перетащите исполняемый файл в пакетный файл.

Это позволит обойти фильтр smartscreen.

Проверено на Windows 10 Домашняя, Профессиональная и Корпоративная, а также на Windows 8 Профессиональная.

Как это работает:

  • @ - Это на всякий случай, скрывает название выполняемой команды
  • %* - расширяется до всех переданных аргументов командной строки (например, файла, который вы поместили в командный файл
  • В целом: он выполняет файл через командный файл, как если бы это была строка в командном файле. По какой-то причине Windows не выполняет никаких проверок файлов, запускаемых из командного файла.
person geek1011    schedule 04.08.2016

Вот хорошее объяснение, как отключить SmartScreen:
- Windows SmartScreen - включение или выключение в Windows 8
- Снимите флажок в параметрах папки

Что я использовал и что у меня сработало? Это был "вариант один" из первой ссылки:

  1. Откройте Панель управления (вид значков) и нажмите / коснитесь значка Центр поддержки.
  2. На левой панели Центра поддержки нажмите / коснитесь ссылки Изменить настройки Windows SmartScreen.
  3. При появлении запроса UAC нажмите / коснитесь Да.
  4. Выберите (точка) вариант того, как Windows SmartScreen будет обрабатывать нераспознанные программы, затем нажмите / коснитесь ОК.
    ПРИМЕЧАНИЕ. По умолчанию используется параметр Получить одобрение администратора перед запуском неизвестное приложение из Интернета.
  5. По завершении вы можете закрыть Центр уведомлений, если хотите.

Я надеюсь, что это то, что вы искали. :)

person Monic    schedule 09.10.2015
comment
Хорошо, у меня минус. Кто-нибудь может мне объяснить, почему? - person Monic; 09.11.2015
comment
Ваш ответ касается того, что пользователи отключают SmartScreen на своих ПК. Вопрос в том, как разработчику приложения запретить пользователям даже видеть окна SmartScreen? Очевидно, это не то, что мы можем сделать (мы должны сказать пользователям, чтобы они отключили его, что может иметь последствия для безопасности). - person ashes999; 20.06.2017

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

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

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

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

person Thorvald Jørgensen    schedule 23.09.2020