Распространять приложение Clickonce для Windows 8

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

Когда пользователь загружает файл setup.exe, Windows 8 SmartScreen все равно предупреждает пользователя, хотя издатель является допустимым.

Теперь, после установки. Windows 8 SmartSreen предложит другое сообщение: "Windows SmartScreen предотвратила запуск нераспознанного приложения. Запуск этого приложения может привести к риску вашего компьютера". и издателем является издатель Unkown.

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

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

Ответы

Ответ 1

Должен ли я подписывать сборку?

Я подозреваю, что это проблема. ClickOnce требует, чтобы его манифесты были подписаны (у вас нет выбора), но я не думаю, что есть требование подписывать сами сборки (как вы намекали), но, скорее всего, это требование Windows 8.

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

Подписать как сборку см.: Как выполнить сборку (Visual Studio)

NB. Подписание сборки dotNet обычно называют сильным наименованием (термины "подписание" и "сильное именование", похоже, используются в этом контексте взаимозаменяемо).

NB. Сильная именованная сборка может ссылаться только на другие сильные узлы, хотя они могут быть подписаны с разными сертификатами. Это может вызвать проблемы, если у вас есть ссылки на сторонние сборки, которые не имеют сильного имени, - это редкость, так как это неправильная практика для выпуска неподписанного кода. Один из вариантов - просто подписать сборку с помощью собственного сертификата, используя sn.exe