Приложение Clickonce подписано, но издатель по-прежнему неизвестен при загрузке

У меня есть действительный сертификат подписи кода с неистекшим сроком действия (стандартный, а не EV), который я использовал для успешной подписи приложения «щелчок один раз» (.net 4.5) и публикации на веб-сервере для загрузки. При загрузке этого приложения оно правильно показывает имя издателя. Проблема в том, что после установки сертификата подписи кода в любом другом приложении оно показывает имя издателя как Неизвестный издатель при загрузке. Нет никакой разницы в том, как я устанавливаю сертификат, и все приложения публикуются на одном и том же веб-сервере. Когда я открываю файл .exe или манифест при входе на веб-сервер, он правильно показывает имя издателя. Проверка свойств файла цифровых подписей показывает, что они подписаны с помощью правильного сертификата подписи кода с sha256. Ниже приведены шаги, которые я использовал:

  1. Установленный сертификат подписи кода, чтобы щелкнуть приложение один раз на вкладке «Подписание», и он включен (Visual Studio 2017 Pro).
  2. Алгоритм подписи кода — sha256RSA с действительным сервером меток времени (http://timestamp.comodoca.com/?td=sha256).
  3. Нажмите, если сборка приложения не подписана.
  4. Сертификат подписи кода был установлен на компьютере разработчика (Windows 10 Pro 1809).
  5. Сертификат подписи кода был установлен на веб-сервере в доверенных корневых центрах сертификации и промежуточных центрах сертификации (Windows 2012 R2 с использованием IIS 8) для учетной записи компьютера.

Кстати, я экспортировал сертификат подписи кода из Internet Explorer с помощью SHA1 и впоследствии установил его на веб-сервер. Существует известная проблема, заключающаяся в том, что при экспорте сертификата в SHA256 и попытке импортировать его на веб-сервер пароль для файла всегда будет неверным. Это случилось со мной, поэтому я просто импортировал версию SHA1 на веб-сервер. Не уверен, что это создаст какие-либо проблемы, но приложение с одним кликом работает нормально.

Обновление: я заметил кое-что странное, когда перехожу по URL-адресу публикации и нажимаю кнопку "Установить". После того, как setup.exe был загружен для приложений clickonce с неизвестными издателями, мне представлен более ужасный интеллектуальный экранный фильтр, в котором говорится, что файл не подписан, но показывает правильную информацию об издателе под ним. Проверка свойства цифровых подписей для исполняемого файла показывает, что он подписан правильно.


person Jakal    schedule 17.06.2020    source источник
comment
Вы можете поделиться исполняемым файлом? Вы говорите, что подписали свое приложение сертификатом SHA-1? Они устарели. Вы можете оказаться в ситуации, когда что-то, подписанное до даты устаревания, по-прежнему принимается, если срок его действия не истек, но что-то, подписанное после даты устаревания, не принимается.   -  person kichik    schedule 26.06.2020
comment
Если вы не можете поделиться файлом, можете ли вы запустить signtool verify /all old.exe new.exe и опубликовать результат?   -  person kichik    schedule 27.06.2020
comment
Спасибо Кичик за ответы. Я выполнил команду проверки в setup.exe для всех приложений, и каждое из них показало ошибку SignTool: цепочка сертификатов обработана, но завершена корневым сертификатом, которому не доверяет поставщик доверия. сообщение. У меня есть сертификат, установленный на веб-сервере, и мой локальный компьютер находится в хранилище доверенных корневых центров сертификации.   -  person Jakal    schedule 27.06.2020
comment
У вас есть корневой сертификат в доверенном хранилище? Кто именно создал ваши сертификаты?   -  person kichik    schedule 27.06.2020
comment
Я показываю сертификат, установленный на моем локальном компьютере и веб-сервере, в хранилище доверенных корневых центров сертификации. Я был тем, кто создал сертификат, используя задокументированный процесс загрузки сертификата через Internet Explorer. Он был выпущен Sectigo RSA Code Signing CA, и, просматривая все свойства сертификата, он показывает, что он действителен. Даже не уверен, что попробовать дальше.   -  person Jakal    schedule 27.06.2020
comment
Хорошо, я попробовал верифицировать signtool с разными входными данными и получил интересные результаты. Я использовал signtool verify /pa /v C:/setup.exe, и он перечисляет цепочку сертификатов как проверенную. В нем также указана цепочка меток времени. Хэш файла — SHA256, но все остальное в цепочке — хеш SHA1, что, я думаю, нормально, так как я думаю, что оно используется для сопоставления файла, а не для целей безопасности?   -  person Jakal    schedule 27.06.2020
comment
SHA-1 не подходит. Это устарело. Я действительно не могу вам помочь, если вы не покажете полные результаты этих инструментов, самого сертификата или исполняемого файла.   -  person kichik    schedule 27.06.2020
comment
Я обновил основной пост, чтобы показать вывод из signtool. Все отпечатки sha1, что должно быть хорошо. Подпись корневого сертификата — sha1. Промежуточные сертификаты — это подписи sha384 и sha256 для сертификата My Software, LLC. Промежуточные сертификаты с отметками времени также имели подпись sha384. Похоже, что цепочка сертификатов с отметками времени начинается с корневого сертификата служб сертификации AAA (такого же, как сертификат аутентификации), который имеет подпись sha1, но для сервера отметок времени установлено значение sha256. Не уверен, что это проблема.   -  person Jakal    schedule 27.06.2020
comment
Сертификат подписи кода представляет собой файл .pfx, если это имеет значение. Все исполняемые файлы показывают, что подпись sha256.   -  person Jakal    schedule 28.06.2020
comment
Вы как-то модифицировали вывод? Хэш вашего корневого сертификата AAA отличается от настоящего на один символ. Что касается вашей проблемы, похоже, что Microsoft отказалась от устаревания SHA-1 для аутентификации. Может быть, попробуйте запустить signtool на чистом компьютере, где вы не трогали хранилище сертификатов, и посмотрите, что он говорит.   -  person kichik    schedule 28.06.2020
comment
Да, я не был уверен, можно ли публиковать хеш, поэтому немного изменил их. В любом случае я разобрался с проблемой!! Я опубликую это ниже, так как есть ограничение на количество символов в этих комментариях.   -  person Jakal    schedule 28.06.2020
comment
Я ПОНЯЛ ЭТО В Visual Studio щелкните вкладку "Публикация", затем "Параметры...", а затем "Манифесты". Снимите флажок Использовать манифест приложения для информации о доверии. ЭТО ОНО. В других моих приложениях, в которых не было проблем, поле «Имя издателя» на вкладке «Параметры публикации» > «Описание» точно совпадало. Для приложений с неизвестным издателем поле «Имя издателя» не совсем соответствовало тому, что было указано в манифесте.   -  person Jakal    schedule 28.06.2020
comment
Огромное спасибо kichik за помощь в его проблеме. Я отказался от этого, но ваша помощь в устранении неполадок была полезной. Я не вижу, где я могу дать вам сумму вознаграждения, которая все еще находится в льготном периоде присуждения.   -  person Jakal    schedule 28.06.2020


Ответы (2)


Моя проблема была вызвана тем, что имя издателя не соответствовало тому, кому был выдан мой сертификат подписи кода, когда в Visual Studio был включен параметр «Использовать манифест приложения для информации о доверии». Снятие флажка с этой опции или исправление имени издателя решили проблему. Это более подробно объясняется ниже:

Проверьте, используется ли манифест вашего приложения для информации о доверии (например, имя издателя). Если это так, убедитесь, что имя издателя в разделе «Описание» ТОЧНО совпадает с тем, кому был выдан сертификат. Если они не совпадают, вы получите сообщение о неизвестной проблеме издателя. Этот параметр находится в Visual Studio на вкладке «Публикация». Нажмите кнопку «Параметры...», а затем элемент списка «Манифесты».

введите здесь описание изображения

Я бы попробовал снять флажок Использовать манифест приложения для информации о доверии и посмотреть, решит ли это проблему. Если вам нужен флажок «Использовать манифест приложения», перейдите на вкладку «Описание» и убедитесь, что значение имени издателя совпадает со значением имени, которому сертификат подписи кода выдан ТОЧНО.

Убедитесь, что имя издателя соответствует тому, кому был выдан сертификат подписи кода

person Jakal    schedule 28.06.2020
comment
Я также испытываю ту же проблему. К сожалению, двойная проверка имени издателя на соответствие сертификату и снятие флажка с вышеупомянутого флажка не сработали для меня. Запуск signtool verify /pa /v setup.exe показал цепочку. Но издатель до сих пор неизвестен. Любые идеи? - person Igor Kondrasovas; 21.01.2021

У меня была та же проблема — действующий сертификат EV — издатель неизвестен при загрузке — но установка прошла гладко, без экрана Windows Smart.

Изменил инструменты сборки с VS2017 на VS2019, похоже, это исправили -› счастлив.

person Hans Karlsen    schedule 30.01.2021