структура 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, позволяющем разрешить раскрытие информации.

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