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

Authenticode — это технология Майкрософт, которая использует шифрование по отраслевому стандарту для подписания кода приложения цифровыми сертификатами, которые удостоверяют подлинность издателя приложения.Authenticode is a Microsoft technology that uses industry-standard cryptography to sign application code with digital certificates that verify the authenticity of the application's publisher. Используя Authenticode для развертывания приложения, ClickOnceClickOnce снижает риск заражения программой-трояном.By using Authenticode for application deployment, ClickOnceClickOnce reduces the risk of a Trojan horse. Программа-троян — это вирус или другая вредоносная программа, которые злоумышленник представляет как легальную программу, исходящую из авторитетного и заслуживающего доверия источника.A Trojan horse is a virus or other harmful program that a malicious third party misrepresents as a legitimate program coming from an established, trustworthy source. Подписание развертываний ClickOnceClickOnce с помощью цифрового сертификата — это необязательный шаг, позволяющий убедиться, что сборки и файлы не были изменены.Signing ClickOnceClickOnce deployments with a digital certificate is an optional step to verify that the assemblies and files are not tampered.

В следующих разделах описываются различные типы цифровых сертификатов, используемых в Authenticode, способ проверки сертификатов с помощью центров сертификации (ЦС), роль меток времени в сертификатах и методы хранения сертификатов.The following sections describe the different types of digital certificates used in Authenticode, how certificates are validated using Certificate Authorities (CAs), the role of time-stamping in certificates, and the methods of storage available for certificates.

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

Цифровой сертификат — это файл, содержащий пару из открытого и закрытого криптографических ключей вместе с метаданными, описывающими издателя, которому был выдан сертификат, и агентство, выдавшее сертификат.A digital certificate is a file that contains a cryptographic public/private key pair, along with metadata describing the publisher to whom the certificate was issued and the agency that issued the certificate.

Существуют различные типы сертификатов Authenticode.There are various types of Authenticode certificates. Каждый из них настроен для разных типов подписывания.Each one is configured for different types of signing. Для приложений ClickOnceClickOnce требуется сертификат Authenticode, пригодный для подписания кода.For ClickOnceClickOnce applications, you must have an Authenticode certificate that is valid for code signing. Если попытаться войти приложение ClickOnceClickOnce с помощью другого типа сертификата, например цифрового сертификата электронной почты, он не будет работать.If you attempt to sign a ClickOnceClickOnce application with another type of certificate, such as a digital e-mail certificate, it will not work. Дополнительные сведения см. в разделе Знакомство с подписыванием кода.For more information, see Introduction to code signing.

Сертификат для подписывания кода можно получить одним из трех способов:You can obtain a certificate for code signing in one of three ways:

  • приобрести у поставщика сертификатов;Purchase one from a certificate vendor.

  • получить от группы, которая отвечает за создание цифровых сертификатов в вашей организации.Receive one from a group in your organization responsible for creating digital certificates.

  • Создать собственный сертификат с помощью командлета PowerShell New-SelfSignedCertificate, или с помощью MakeCert.exe, входящий в состав Windows SDKWindows Software Development Kit (SDK).Generate your own certificate by using the New-SelfSignedCertificate PowerShell cmdlet, or by using MakeCert.exe, which is included with the Windows SDKWindows Software Development Kit (SDK).

Польза центров сертификации для пользователейHow using certificate authorities helps users

Сертификат, созданный с помощью New-SelfSignedCertificate или MakeCert.exe служебная программа, обычно называется автосертификатом или тестовым сертификатом. Сертификат этого типа работает во многом так же, как .snk файл будет работать в .NET Framework.A certificate generated using New-SelfSignedCertificate or the MakeCert.exe utility is commonly called a self-cert or a test cert. This kind of certificate works much the same way that a .snk file works in the .NET Framework. Он состоит только из пары открытого и закрытого криптографических ключей и не содержит проверяемых сведений об издателе.It consists solely of a public/private cryptographic key pair, and contains no verifiable information about the publisher. Автосертификаты можно использовать для развертывания приложений ClickOnceClickOnce с высоким уровнем доверия в интрасети.You can use self-certs to deploy ClickOnceClickOnce applications with high trust on an intranet. Однако когда эти приложения выполняются на клиентском компьютере, ClickOnceClickOnce идентифицирует их как поступающие от неизвестного издателя.However, when these applications run on a client computer, ClickOnceClickOnce will identify them as coming from an Unknown Publisher. По умолчанию приложения ClickOnceClickOnce , подписанные с помощью автосертификатов и развертываемые через Интернет, не могут использовать развертывание доверенных приложений.By default, ClickOnceClickOnce applications signed with self-certs and deployed over the Internet cannot utilize Trusted Application Deployment.

И наоборот, если вы получаете сертификат из такого центра сертификации, как поставщик сертификатов или отдел внутри вашей организации, этот сертификат обеспечивает повышенную безопасность для пользователей.By contrast, if you receive a certificate from a CA, such as a certificate vendor, or a department within your enterprise, the certificate offers more security for your users. Он не только идентифицирует издателя подписанного программного обеспечения, но и проверяет его удостоверение путем сверки с ЦС, подписавшим его.It not only identifies the publisher of the signed software, but it verifies that identity by checking with the CA that signed it. Если ЦС не является корневым, Authenticode также выстраивает обратную "цепочку" до корневого центра, чтобы убедиться, что ЦС авторизован для выдачи сертификатов.If the CA is not the root authority, Authenticode will also "chain" back to the root authority to verify that the CA is authorized to issue certificates. Для повышения безопасности следует по возможности использовать сертификат, выданный центром сертификации.For greater security, you should use a certificate issued by a CA whenever possible.

Дополнительные сведения о создании автосертификатов см. в разделе New-SelfSignedCertificate или MakeCert.For more information about generating self-certs, see New-SelfSignedCertificate or MakeCert.

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

Сертификаты, используемые для подписи приложений ClickOnceClickOnce , имеют определенный срок действия, который обычно составляет двенадцать месяцев.The certificates used to sign ClickOnceClickOnce applications expire after a certain length of time, typically twelve months. Чтобы устранить необходимость в постоянном повторном подписывании приложений с использованием новых сертификатов, ClickOnceClickOnce поддерживает метку времени.In order to remove the need to constantly re-sign applications with new certificates, ClickOnceClickOnce supports timestamp. Когда приложение подписано с меткой времени, его сертификат будет приниматься даже после истечения срока действия, при условии, что действительна метка времени.When an application is signed with a timestamp, its certificate will continue to be accepted even after expiration, provided the timestamp is valid. Это позволяет скачивать и запускать приложения ClickOnceClickOnce с просроченными сертификатами, но действительными метками времени.This allows ClickOnceClickOnce applications with expired certificates, but valid timestamps, to download and run. Кроме того, это позволяет установленным приложениям с просроченными сертификатами продолжать скачивать и устанавливать обновления.It also allows installed applications with expired certificates to continue to download and install updates.

Чтобы включить метку времени на сервер приложений, должен быть доступен сервер меток времени.To include a timestamp in an application server, a timestamp server must be available. Сведения о выборе сервера меток времени, см. в разделе как: Подписание манифестов приложения и развертывания.For information about how to select a timestamp server, see How to: Sign Application and Deployment Manifests.

Обновлять сертификаты с истекшим сроком действияUpdate expired certificates

В более ранних версиях платформы .NET Framework обновление приложения, у которого истек срок действия сертификата, могло привести к прекращению работы этого приложения.In earlier versions of the .NET Framework, updating an application whose certificate had expired could cause that application to stop functioning. Чтобы устранить эту проблему, воспользуйтесь одним из следующих способов:To resolve this problem, use one of the following methods:

  • Обновите платформу .NET Framework до версии 2.0 с пакетом обновления 1 или более поздней в Windows XP или до версии 3.5 или более поздней в Windows Vista.Update the .NET Framework to version 2.0 SP1 or later on Windows XP, or version 3.5 or later on Windows Vista.

  • Удалите приложение и переустановите новую версию с действительным сертификатом.Uninstall the application, and reinstall a new version with a valid certificate.

  • Создайте сборку командной строки, которая обновляет сертификат.Create a command-line assembly that updates the certificate. Пошаговые инструкции для этого процесса можно найти в справочной статье 925521 Майкрософт.Step-by-step information about this process can be found at Microsoft Support Article 925521.

Сертификаты StoreStore certificates

  • Сертификаты можно хранить в виде PFX-файла в файловой системе или внутри контейнера ключей.You can store certificates as a .pfx file on your file system, or you can store them inside of a key container. Пользователь в домене Windows может иметь несколько контейнеров ключей.A user on a Windows domain can have a number of key containers. По умолчанию MakeCert.exe сохраняет сертификаты в личном контейнере ключей, если не указано, что сертификат должен храниться в виде PFX-файла.By default, MakeCert.exe will store certificates in your personal key container, unless you specify that it should save it to a .pfx instead. Mage.exe и MageUI.exe — инструменты Windows SDKWindows SDK для создания развертываний ClickOnceClickOnce — позволяют использовать сертификаты, хранящиеся в любом режиме.Mage.exe and MageUI.exe, the Windows SDKWindows SDK tools for creating ClickOnceClickOnce deployments, enable you to use certificates stored in either fashion.

См. такжеSee also