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


Закрытые ключи CryptoAPI 2.0

Учетные данные Schannel представляются внутри как CERT_CONTEXT структуры. Schannel находит закрытый ключ , связанный с определенным контекстом сертификата, с помощью свойства CERT_KEY_PROV_INFO_PROP_ID сертификата. Используя это свойство, Schannel обращается к закрытому ключу , вызывая функцию CryptAcquireContext . Дополнительные сведения см. в разделе Пары открытого и закрытого ключей.

Каждое удостоверение Schannel содержит ссылку на один или несколько закрытых ключей, каждый из которых связан с определенным сертификатом. Закрытые ключи обрабатываются совершенно по-разному в зависимости от того, являются ли учетные данные для клиента или сервера.

Закрытые ключи клиента

Закрытыми ключами клиента управляет используемый поставщик служб шифрования (CSP). Закрытые ключи клиента обычно хранятся в CSP типа PROV_RSA_FULL или PROV_RSA_SIGNATURE.

Если клиентское приложение выполняет вызов CryptAcquireContext вручную, то перед вызовом AcquireCredentialsHandle клиент должен привязать дескриптор CSP к контексту сертификата с помощью свойства CERT_KEY_PROV_HANDLE_PROP_ID. Если Schannel находит этот набор свойств, он не использует свойство CERT_KEY_PROV_INFO_PROP_ID.

Закрытые ключи сервера

Закрытые ключи сервера хранятся одним из следующих поставщиков служб конфигурации:

  • PROV_RSA_SCHANNEL
  • PROV_DH_SCHANNEL
  • PROV_FORTEZZA CSP

Выбор поставщика служб конфигурации зависит от выбранного алгоритма обмена ключами. Закрытые ключи сервера должны быть типа AT_KEYEXCHANGE.