структура 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 равен нулю или palgSupportedAlgs имеет значение NULL, Schannel использует системные значения по умолчанию.

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

grbitEnabledProtocols

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

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

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

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

Значение Значение
SP_PROT_PCT1_SERVER
0x00000001
На стороне сервера Private Communications Technology 1.0.
Примечание Устаревшие.
 
SP_PROT_PCT1_CLIENT
0x00000002
На стороне клиента Private Communications Technology 1.0.
Примечание Устаревшие.
 
SP_PROT_SSL2_SERVER
0x00000004
Secure Sockets Layer 2.0 на стороне сервера. Заменено SP_PROT_TLS1_SERVER.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 1.2 являются взаимоисключающими.
 
Windows 10 версии 1607 и Windows Server 2016.: поддержка прекращается.
SP_PROT_SSL2_CLIENT
0x00000008
Secure Sockets Layer 2.0 на стороне клиента. Заменено SP_PROT_TLS1_CLIENT.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 1.2 являются взаимоисключающими.
 
Windows 10 версии 1607 и Windows Server 2016.: поддержка прекращается.
SP_PROT_SSL3_SERVER
0x00000010
Secure Sockets Layer 3.0 на стороне сервера.
SP_PROT_SSL3_CLIENT
0x00000020
Secure Sockets Layer 3.0 на стороне клиента.
SP_PROT_TLS1_SERVER
0x00000040
На стороне сервера Transport Layer Security 1.0.
SP_PROT_TLS1_CLIENT
0x00000080
Безопасность транспортного уровня 1.0 на стороне клиента.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
На стороне сервера Transport Layer Security 1.0.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Безопасность транспортного уровня 1.0 на стороне клиента.
SP_PROT_TLS1_1_SERVER
0x00000100
На стороне сервера Transport Layer Security 1.1.
SP_PROT_TLS1_1_CLIENT
0x00000200
Безопасность транспортного уровня 1.1 на стороне клиента.
SP_PROT_TLS1_2_SERVER
0x00000400
Безопасность транспортного уровня 1.2 на стороне сервера.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Безопасность транспортного уровня 1.2 на стороне клиента.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_3_SERVER
0x00001000
На стороне сервера Transport Layer Security 1.3.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 1.2 являются взаимоисключающими.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Безопасность транспортного уровня 1.3 на стороне клиента.
Важно Флаги Secure Sockets Layer 2.0 и Transport Layer Security 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 MAC (также известные как шифр NULL ).

dwMaximumCipherStrength

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

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

Если этот член равен –1, включены только комплекты шифров SSL3/TLS MAC (также известные как шифр 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 может привести к раскрытию информации в базе знаний справки и поддержки по адресу 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 и отключить все остальные наборы шифров.

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 (включая Schnlsp.h)

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

QuerySecurityContextToken