структура SCH_CREDENTIALS (schannel.h)

Структура SCH_CREDENTIALS содержит сведения об инициализации учетных данных Schannel.

Синтаксис

typedef struct _SCH_CREDENTIALS {
  DWORD           dwVersion;
  DWORD           dwCredFormat;
  DWORD           cCreds;
  PCCERT_CONTEXT  *paCred;
  HCERTSTORE      hRootStore;
  DWORD           cMappers;
  _HMAPPER        **aphMappers;
  struct          _HMAPPER;
  DWORD           dwSessionLifespan;
  DWORD           dwFlags;
  DWORD           cTlsParameters;
  PTLS_PARAMETERS pTlsParameters;
} SCH_CREDENTIALS, *PSCH_CREDENTIALS;

Члены

dwVersion

Задайте значение SCH_CREDENTIALS_VERSION.

dwCredFormat

Schannel в режиме ядра поддерживает следующие значения.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP и Windows XP/2000: Этот флаг не поддерживается и должен быть равен нулю.

Значение Значение
SCH_CRED_FORMAT_CERT_HASH
0x00000001
Элемент paCred структуры SCH_CREDENTIALS должен быть указателем на массив байтов длиной 20, содержащий отпечаток сертификата. Предполагается, что сертификат находится в хранилище "MY" локального компьютера.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
Элемент paCred структуры SCH_CREDENTIALS указывает на структуру SCHANNEL_CERT_HASH_STORE .

cCreds

Количество структур в массиве paCred.

paCred

Массив указателей на структуры CERT_CONTEXT. Каждый указатель указывает сертификат, содержащий закрытый ключ, который будет использоваться при проверке подлинности приложения.

Клиентские приложения часто передают пустой список и либо зависят от Schannel, чтобы найти соответствующий сертификат, либо создать сертификат позже, если это потребуется.

hRootStore

Необязательный элемент. Допустимо только для серверных приложений. Обработка в хранилище сертификатов, которое содержит самозаверяющие корневые сертификаты для центров сертификации (ЦС), доверенных для приложения. Этот элемент используется только серверными приложениями, которым требуется проверка подлинности клиента.

cMappers

Зарезервировано.

aphMappers

Зарезервировано.

_HMAPPER

dwSessionLifespan

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

dwFlags

Содержит битовые флаги, управляющие поведением Schannel. Этот элемент может быть нулевым или сочетанием следующих значений.

Значение Значение
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
Только клиент.

Этот флаг является противоположностью SCH_CRED_MANUAL_CRED_VALIDATION и является частью поведения Schannel по умолчанию.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
Указать Schannel передать флаг CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL функции CertGetCertificateChain при проверке указанных учетных данных во время вызова AcquireCredentialsHandle (Schannel).

Windows Server 2003 и Windows XP/2000: Этот флаг не поддерживается.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
Только сервер.

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

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
При проверке на наличие отозванных сертификатов игнорируйте ошибки CRYPT_E_NO_REVOCATION_CHECK. Дополнительные ограничения см. в разделе Примечания.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
При проверке на наличие отозванных сертификатов игнорируйте ошибки CRYPT_E_REVOCATION_OFFLINE. Дополнительные ограничения см. в разделе Примечания.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
Только клиент.

Запретите Schannel проверки полученной цепочки сертификатов сервера.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Только клиент.

Запретить Schannel автоматически предоставлять цепочку сертификатов для проверки подлинности клиента.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
Только клиент.

Запретите Schannel сравнивать указанное целевое имя с именами субъектов в сертификатах сервера.

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
Только сервер.

Запретите Schannel использовать встроенные функции сопоставления системных сертификатов для сопоставления сертификатов клиента с учетной записью пользователя.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
При проверке цепочки сертификатов проверка все сертификаты для отзыва. Дополнительные ограничения см. в разделе Примечания.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
При проверке цепочки сертификатов не проверка корневой каталог для отзыва. Дополнительные ограничения см. в разделе Примечания.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
При проверке цепочки сертификатов проверка только последний сертификат для отзыва. Дополнительные ограничения см. в разделе Примечания.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
Только клиент.

Schannel пытается автоматически предоставить цепочку сертификатов для проверки подлинности клиента. Это значение противоположно SCH_CRED_NO_DEFAULT_CREDS.

SCH_SEND_AUX_RECORD
0x00200000
Поручите Schannel разделить данные для шифрования на две отдельные записи, чтобы противостоять уязвимостям, которые присутствуют в протоколе SSL/TLS при использовании с набором симметричных шифров в режиме цепочки блоков шифров. Дополнительные сведения см. в разделе "Уязвимость в SSL/TLS может привести к раскрытию информации" в базе знаний справки и поддержки по адресу http://support.microsoft.com/kb/2643584.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP и Windows XP/2000: Этот флаг не поддерживается.

SCH_SEND_ROOT_CERT
0x00040000
Schannel отправляет корневой сертификат как часть сообщения о сертификате.
Примечание Корневой сертификат, отправленный по сети клиентом или сервером Schannel, не должен быть доверенным. Его следует проверить на соответствие доверенному хэшу корневого сертификата.
 
SCH_USE_STRONG_CRYPTO
0x00400000
Указывает Schannel отключить известные слабые алгоритмы шифрования, комплекты шифров и версии протокола SSL/TLS, которые в противном случае могут быть включены для улучшения взаимодействия.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Указывает Schannel выбрать только комплекты шифров PSK и отключить все остальные наборы шифров.

cTlsParameters

Количество записей в массиве pTlsParameters.

Указание более SCH_CRED_MAX_SUPPORTED_PARAMETERS является ошибкой.

pTlsParameters

Массив указателей на структуры TLS_PARAMETERS , указывающие ограничения параметров TLS, если таковые есть. Если ограничения не указаны, используются системные значения по умолчанию. Рекомендуется, чтобы приложения полагались на системные значения по умолчанию.

Добавление нескольких TLS_PARAMETERS структуры с cAlpnIds == 0 и rgstrAlpnIds == NULL является ошибкой.

Комментарии

Чтобы использовать структуру SCH_CREDENTIALS, определите SCHANNEL_USE_BLACKLISTS вместе с UNICODE_STRING и PUNICODE_STRING. Кроме того, можно включить Ntdef.h, SubAuth.h или Winternl.h.

Требования

Требование Значение
Минимальная версия клиента Windows 10 1809 [только классические приложения]
Минимальная версия сервера Windows Server 1809 [только классические приложения]
Верхняя часть schannel.h

См. также раздел

CRYPTO_SETTINGS

TLS_PARAMETERS