Вводные сведения о сертификатах
В этой статье описывается использование сертификатов в приложениях универсальной платформы Windows (UWP). Цифровые сертификаты применяются в шифровании с открытым ключом для привязки открытого ключа к пользователю, компьютеру или организации. Чаще всего удостоверения привязки используются для проверки подлинности одного объекта по отношению к другому. Например, часто сертификаты используются для проверки подлинности веб-сервера по отношению к пользователю и пользователя по отношению к веб-серверу. Можно создавать запросы сертификатов и устанавливать или импортировать выданные сертификаты. Сертификат также можно регистрировать в иерархии сертификатов.
Общие хранилища сертификатов
Приложения UWP используют новую изоляционистскую модель приложений, представленную в Windows 8. В этой модели приложения работают внутри низкоуровневого структурного элемента операционной системы, называемого контейнером приложения, который закрывает приложению доступ к ресурсам или файлам за своими пределами, если на это нет явного разрешения. В следующих разделах описаны последствия использования этой модели в инфраструктуре открытых ключей (PKI).
Хранение сертификатов для контейнера приложения
Сертификаты, предназначенные для использования в конкретном контейнере приложения, хранятся в отдельных для каждого пользователя и контейнера местах. Приложение, выполняющееся внутри контейнера, имеет доступ на запись только к своему хранилищу сертификатов. Если приложение добавляет сертификаты в какое-либо из своих хранилищ, другие приложения не могут читать эти сертификаты. Когда приложение удаляется, вместе с ним удаляются и его собственные сертификаты. Приложение имеет также доступ на чтение ко всем хранилищам сертификатов локального компьютера, кроме хранилищ MY и REQUEST.
Кэш
У каждого контейнера приложения есть изолированный кэш, в котором могут сохраняться сертификаты поставщиков, необходимые для проверки, списки отзыва сертификатов (CRL) и ответы OCSP.
Общие сертификаты и ключи
Когда в устройство чтения смарт-карт вставляется смарт-карта, действие сертификатов и ключей, содержащихся на карте, распространяется на хранилище MY пользователя, где любое выполняемое пользователем приложение с полным доверием может совместно использовать эти ключи и сертификаты. Однако по умолчанию контейнеры приложения лишены доступа к пользовательскому хранилищу MY.
Устранить эту проблему и разрешить группам субъектов доступ к группам ресурсов можно с помощью модели изоляции для контейнера приложения, поддерживающей концепцию возможностей. Возможность — это атрибут, который обеспечивает процессу контейнера приложения доступ к конкретному ресурсу. Например, возможность sharedUserCertificates предоставляет контейнеру приложения доступ на чтение к сертификатам и ключам, находящимся в пользовательском хранилище MY и хранилище доверенных корневых сертификатов смарт-карты. При этом она не предоставляет доступа на чтение к хранилищу REQUEST пользователя.
Возможность sharedUserCertificates объявляется в манифесте, как показано в следующем примере.
<Capabilities>
<Capability Name="sharedUserCertificates" />
</Capabilities>
Поля сертификата
Со временем стандарт сертификатов открытого ключа X.509 подвергался пересмотрам. Каждая последующая версия структуры данных сохраняла поля, существовавшие в предыдущих версиях, и к ней добавлялись новые, как показано ниже.
Некоторые из этих полей и расширений можно задавать непосредственно при использовании класса CertificateRequestProperties для создания запроса сертификата, но для большинства полей и расширений это выполнить невозможно. Такие поля и расширения могут быть заполнены центром, выдающим сертификат, или могут быть оставлены пустыми. Дополнительные сведения об этих полях см. в следующих разделах:
Поля, версия 1
Поле | Описание |
---|---|
Версия | Указывает номер версии закодированного сертификата. Текущие возможные значения этого поля: 0, 1 или 2. |
Серийный номер | Содержит положительное уникальное целое число, присвоенное сертификату центром сертификации (ЦС). |
Алгоритм подписи | Содержит идентификатор объекта (ИО), указывающий алгоритм, применявшийся ЦС для подписания сертификата. Например, 1.2.840.113549.1.1.5 указывает на использование хэш-алгоритма SHA-1 вместе с алгоритмом шифрования RSA, разработанного RSA Laboratories. |
Издатель | Содержит различающееся имя (РИ) X.500 ЦС, создавшего и подписавшего сертификат. |
Срок действия | Указывает промежуток времени, в течение которого действует сертификат. Для дат до конца 2049 года используется формат всемирного координированного времени (времени по Гринвичу) (ггммддччммссз). Для дат с 1 января 2050 года используется универсальный формат времени (ггггммддччммссз). |
Тема | Содержит различающееся имя X.500 объекта, связанного с открытым ключом, содержащимся в сертификате. |
Открытый ключ | Содержит открытый ключ и данные связанного алгоритма. |
Поля, версия 2
Сертификат X.509 версии 2 содержит основные поля, определенные в версии 1, а также следующие поля.
Поле | Описание |
---|---|
Уникальный идентификатор поставщика | Содержит уникальное значение, которое может быть использовано для того, чтобы имя ЦС по стандарту X.500 однозначно идентифицировало этот ЦС при последующем многократном использовании различными объектами. |
Уникальный идентификатор субъекта | Содержит уникальное значение, которое может быть использовано для того, чтобы имя субъекта по стандарту X.500 однозначно идентифицировало этот субъект при последующем многократном использовании различными объектами. |
Расширения, версия 3
Сертификат X.509 версии 3 содержит основные поля, определенные в версии 1 и в версии 2, а также следующие расширения сертификата.
Поле | Описание |
---|---|
Идентификатор ключа центра сертификации | Идентифицирует открытый ключ центра сертификатов (ЦС), соответствующий закрытому ключу ЦС, который используется для подписания данного сертификата. |
Базовые ограничения | Определяет, может ли объект использоваться в качестве ЦС, и, если может, номера подчиненных ЦС, которые могут присутствовать в нисходящей цепочке сертификатов. |
Политики сертификата | Определяет политики, регулирующие выдачу сертификата, и возможные цели его использования. |
Точки распространения списков отзыва сертификатов (CRL) | Содержит URI основного списка отзыва сертификата (CRL). |
Расширенное использование ключа | Указывает механизм использования открытого ключа, содержащегося в данном сертификате. |
Дополнительное имя поставщика | Определяет одну (или более одной) дополнительную форму имени для поставщика запроса сертификата. |
Использование ключа | Определяет ограничения для операций, которые могут выполняться с использованием открытого ключа, содержащегося в данном сертификате. |
Ограничения имени | Определяет пространство имен, в котором должны быть размещены все имена субъектов в иерархии сертификата. Это расширение используется только в сертификате ЦС. |
Ограничения политики | Ограничивает проверку пути при помощи запрещения сопоставлений политики или требования, чтобы каждый сертификат в данной иерархии содержал допустимый идентификатор политики. Это расширение используется только в сертификате ЦС. |
Сопоставления политики | Указывает, какие политики в подчиненном ЦС соответствуют политикам в выдающем ЦС. |
Период использования закрытого ключа | Указывает срок действия закрытого ключа, отличающийся от срока действия сертификата, с которым связан этот закрытый ключ. |
Альтернативное имя субъекта | Определяет одну (или более одной) дополнительную форму имени для субъекта запроса сертификата. Примеры дополнительных форм могут включать адреса электронной почты, DNS-имена, IP-адреса и URI. |
Атрибуты каталога субъекта | Сообщает атрибуты идентификации, например национальную принадлежность субъекта сертификата. Значением расширения является последовательность пар значений кодов объекта (OID) |
Идентификатор ключа субъекта | Служит для разделения нескольких открытых ключей, держателем которых является субъект сертификата. Значением расширения обычно является хэш SHA-1 ключа. |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по