Поделиться через


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

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

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

Технология Authenticode и подписание кода

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

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

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

  • Купить сертификат у поставщика сертификатов..

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

  • Создать собственный сертификат с помощью программы MakeCert.exe, которая содержится в Windows SDK.

Использование центров сертификации в помощь пользователям

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

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

Дополнительные сведения о создании автосертификатов см. в статье Makecert.exe (средство создания сертификатов).

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

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

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

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

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

  • Обновите платформу .NET Framework до версии 2.0 с пакетом обновления 1 (SP1) или более новым для Windows XP или до версии 3.5 или более новой версии для Windows Vista.

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

  • Создайте сборку командной строки, которая обновляет сертификат. Пошаговые инструкции по этому процессу можно найти в статье Microsoft Support Article 925521.

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

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

См. также

Ссылки

Mage.exe (средство создания и редактирования манифеста)

Основные понятия

Развертывание и безопасность технологии ClickOnce

Защита приложений ClickOnce

Общие сведения о развертывании доверенных приложений