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

Заметка

Структура SCHANNEL_CRED устарела. Вместо этого следует использовать SCH_CREDENTIALS.

Структура SCHANNEL_CRED содержит данные для учетных данных Schannel.

Синтаксис

typedef struct _SCHANNEL_CRED {
  DWORD          dwVersion;
  DWORD          cCreds;
  PCCERT_CONTEXT *paCred;
  HCERTSTORE     hRootStore;
  DWORD          cMappers;
  _HMAPPER       **aphMappers;
  struct         _HMAPPER;
  DWORD          cSupportedAlgs;
  ALG_ID         *palgSupportedAlgs;
  DWORD          grbitEnabledProtocols;
  DWORD          dwMinimumCipherStrength;
  DWORD          dwMaximumCipherStrength;
  DWORD          dwSessionLifespan;
  DWORD          dwFlags;
  DWORD          dwCredFormat;
} SCHANNEL_CRED, *PSCHANNEL_CRED;

Члены

dwVersion

Установите значение SCHANNEL_CRED_VERSION.

cCreds

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

paCred

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

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

hRootStore

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

cMappers

Скрытный.

aphMappers

Скрытный.

_HMAPPER

cSupportedAlgs

Количество алгоритмов в массиве palgSupportedAlgs.

palgSupportedAlgs

Необязательный. Указатель на массив идентификаторов алгоритмов ALG_ID, представляющих алгоритмы, поддерживаемые соединениями, полученными с учетными данными, приобретенными с помощью этой структуры. Если cSupportedAlgs равно нулю или palgSupportedAlgsNULL, Schannel использует системные значения по умолчанию.

В настоящее время идентификаторы алгоритма CALG_AES, CALG_AES_128и CALG_AES_256 не поддерживаются.

grbitEnabledProtocols

Необязательный. DWORD, содержащий битовую строку, представляющую протоколы, поддерживаемые подключениями, полученными с помощью этой структуры. Если этот элемент равен нулю, Schannel выбирает протокол. Для новой разработки приложения должны задать grbitEnabledProtocols равным нулю и использовать версии протокола, включенные в системе по умолчанию.

Этот член используется только поставщиком протокола безопасности Майкрософт пакетом безопасности.

Параметры глобального реестра систем имеют приоритет над этим значением. Например, если ПРОТОКОЛ SSL3 отключен в реестре, его нельзя включить с помощью этого элемента.

Этот элемент может содержать любой из следующих флагов.

Ценность Значение
SP_PROT_PCT1_SERVER
0x00000001
Частная технология связи 1.0 на стороне сервера.
примечание устаревшее.
 
SP_PROT_PCT1_CLIENT
0x00000002
Клиентская технология частных коммуникаций 1.0.
примечание устаревшее.
 
SP_PROT_SSL2_SERVER
0x00000004
Защита сокетов на стороне сервера уровня 2.0. Заменены SP_PROT_TLS1_SERVER.
Важные флаги уровня 2.0 и транспортных уровней безопасности 1.2 являются взаимоисключающими.
 
Windows 10 версии 1607 и Windows Server 2016.: поддержка заканчивается.
SP_PROT_SSL2_CLIENT
0x00000008
Клиентская сторона уровня 2.0 Secure Sockets. Заменены SP_PROT_TLS1_CLIENT.
Важные флаги уровня 2.0 и транспортных уровней безопасности 1.2 являются взаимоисключающими.
 
Windows 10 версии 1607 и Windows Server 2016.: поддержка заканчивается.
SP_PROT_SSL3_SERVER
0x00000010
Защита сокетов на стороне сервера уровня 3.0.
SP_PROT_SSL3_CLIENT
0x00000020
Клиентская сторона уровня 3.0 secure Sockets.
SP_PROT_TLS1_SERVER
0x00000040
Серверная сторона транспортного уровня безопасности 1.0.
SP_PROT_TLS1_CLIENT
0x00000080
Клиентская сторона транспортного уровня безопасности 1.0.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
Серверная сторона транспортного уровня безопасности 1.0.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Клиентская сторона транспортного уровня безопасности 1.0.
SP_PROT_TLS1_1_SERVER
0x00000100
Серверная сторона транспортного уровня безопасности 1.1.
SP_PROT_TLS1_1_CLIENT
0x00000200
Клиентская сторона транспортного уровня безопасности 1.1.
SP_PROT_TLS1_2_SERVER
0x00000400
Серверная сторона транспортного уровня безопасности 1.2.
Важные флаги уровня 2.0 и транспортных уровней безопасности 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Клиентская сторона транспортного уровня безопасности 1.2.
Важные флаги уровня 2.0 и транспортных уровней безопасности 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Серверная сторона транспортного уровня безопасности 1.3.
Важные флаги уровня 2.0 и транспортных уровней безопасности 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Клиентская сторона транспортного уровня безопасности 1.3.
Важные флаги уровня 2.0 и транспортного уровня безопасности 1.3 являются взаимоисключающими.
 
SP_PROT_DTLS_SERVER
0x00010000
Сервер datagram Transport Layer Security на стороне сервера.

Windows 8 и Windows Server 2012: добавлена поддержка .

SP_PROT_DTLS_CLIENT
0x00020000
Клиент datagram Transport Layer Security.

Windows 8 и Windows Server 2012: добавлена поддержка .

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
Серверная часть сервера Datagram Transport Layer Security 1.0.

Windows 8 и Windows Server 2012: добавлена поддержка .

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Клиентская сторона datagram Transport Layer Security 1.0.

Windows 8 и Windows Server 2012: добавлена поддержка .

SP_PROT_DTLS1_2_SERVER
0x00040000
Серверная часть сервера datagram Transport Layer Security 1.2.

Windows 10 версии 1607 и Windows Server 2016.: добавлена поддержка .

SP_PROT_DTLS1_2_CLIENT
0x00080000
Клиентская часть клиента Datagram Transport Layer Security 1.2.

Windows 10 версии 1607 и Windows Server 2016.: добавлена поддержка .

SP_PROT_DTLS1_X_SERVER
Datagram Transport Layer Security все поддерживаемые версии на стороне сервера.

Windows 10 версии 1607 и Windows Server 2016.: добавлена поддержка .

SP_PROT_DTLS1_X_CLIENT
Datagram Transport Layer Security все поддерживаемые версии на стороне клиента.

Windows 10 версии 1607 и Windows Server 2016.: добавлена поддержка .

dwMinimumCipherStrength

Минимальная сила шифра массового шифрования в битах, разрешенная для подключений.

Если этот элемент равен нулю, Schannel использует системное значение по умолчанию. Если этот член равен –1, включены только наборы шифров SSL3/TLS (также известные как шифр NULL).

dwMaximumCipherStrength

Максимальная сила шифра массового шифрования в битах, разрешенная для подключений.

Если этот элемент равен нулю, Schannel использует системное значение по умолчанию.

Если этот член равен –1, включены только наборы шифров SSL3/TLS (также известные как шифр NULL). В этом случае dwMinimumCipherStrength должно иметь значение –1.

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 и отключить все остальные наборы шифров.

dwCredFormat

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

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

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

Замечания

Следующие флаги отзыва сертификатов являются взаимоисключающими.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Чтобы настроить отчеты об ошибках отзыва сертификатов для Schannel, используйте следующие флаги:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Когда Schannel проверяет состояние отзыва цепочки сертификатов, эти флаги указывают ему игнорировать любые CRYPT_E_NO_REVOCATION_CHECK и CRYPT_E_REVOCATION_OFFLINE ошибки соответственно. Эти флаги игнорируются, если флаг отзыва сертификата не задан.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8.1 [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2012 R2 [только классические приложения]
заголовка schannel.h (include Schnlsp.h)

См. также

QuerySecurityContextToken