ClickOnce и технология Authenticode

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

В следующих разделах описываются различные типы цифровых сертификатов, используемых в Authenticode, способ проверки сертификатов с помощью центров сертификации (ЦС), роль меток времени в сертификатах и методы хранения сертификатов.

Authenticode и подписывание кода

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

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

Сертификат для подписывания кода можно получить одним из трех способов:

  • приобрести у поставщика сертификатов;

  • получить от группы, которая отвечает за создание цифровых сертификатов в вашей организации.

  • Создайте собственный сертификат с помощью командлета PowerShell New-SelfSignedCertificate или с помощью MakeCert.exe, который входит в состав комплекта средств разработки программного обеспечения Windows (SDK).

Польза центров сертификации для пользователей

Сертификат, созданный с помощью New-SelfSignedCertificate или MakeCert.exe служебная программа, обычно называется автосертификатом или тестовым сертификатом. Сертификат этого типа работает так же, как и SNK-файл в платформе .NET Framework. Он состоит только из пары открытого и закрытого криптографических ключей и не содержит проверяемых сведений об издателе. Вы можете использовать самозаверяющие сертификаты для развертывания приложений ClickOnce с высоким уровнем доверия в интрасети. Однако, когда эти приложения выполняются на клиентском компьютере, ClickOnce определит их как поступающие из неизвестного издателя. По умолчанию приложения ClickOnce, подписанные с помощью самозаверяемых сертификатов и развернутые через Интернет, не могут использовать развертывание доверенных приложений.

И наоборот, если вы получаете сертификат из такого центра сертификации, как поставщик сертификатов или отдел внутри вашей организации, этот сертификат обеспечивает повышенную безопасность для пользователей. Он не только идентифицирует издателя подписанного программного обеспечения, но и проверяет его удостоверение путем сверки с ЦС, подписавшим его. Если ЦС не является корневым, Authenticode также выстраивает обратную "цепочку" до корневого центра, чтобы убедиться, что ЦС авторизован для выдачи сертификатов. Для повышения безопасности следует по возможности использовать сертификат, выданный центром сертификации.

Дополнительные сведения о создании самозаверяющих сертификатов см. в статье New-SelfSignedCertificate или MakeCert.

Метки времени

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

Чтобы включить метку времени на сервер приложений, должен быть доступен сервер меток времени. Сведения о выборе сервера меток времени см. в разделе How to: Sign Application and Deployment Manifests.

Обновление сертификатов с истекшим сроком действия

В более ранних версиях платформы .NET Framework обновление приложения, у которого истек срок действия сертификата, могло привести к прекращению работы этого приложения. Чтобы устранить эту проблему, воспользуйтесь одним из следующих способов:

  • Обновите платформа .NET Framework версии 3.5 или более поздней.

  • Удалите приложение и переустановите новую версию с действительным сертификатом.

Хранение сертификатов

  • Сертификаты можно хранить в виде PFX-файла в файловой системе или внутри контейнера ключей. Пользователь в домене Windows может иметь несколько контейнеров ключей. По умолчанию MakeCert.exe сохраняет сертификаты в личном контейнере ключей, если не указано, что сертификат должен храниться в виде PFX-файла. Mage.exe и MageUI.exe, средства Windows SDK для создания развертываний ClickOnce позволяют использовать сертификаты, хранящиеся в любом случае.