структура 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 отключен в реестре, его нельзя включить с помощью этого элемента.
Этот элемент может содержать любой из следующих флагов.
dwMinimumCipherStrength
Минимальная надежность шифра массового шифрования в битах, разрешенная для подключений.
Если этот элемент равен нулю, Schannel использует системное значение по умолчанию. Если этот член равен –1, включены только комплекты шифров SSL3/TLS MAC (также известные как шифр NULL ).
dwMaximumCipherStrength
Максимальная надежность шифра массового шифрования в битах, разрешенная для подключений.
Если этот элемент равен нулю, Schannel использует системное значение по умолчанию.
Если этот член равен –1, включены только комплекты шифров SSL3/TLS MAC (также известные как шифр NULL ). В этом случае параметру dwMinimumCipherStrength необходимо задать значение –1.
dwSessionLifespan
Количество миллисекундах, в которых Schannel хранит сеанс в своем кэше сеансов. По истечении этого времени все новые подключения между клиентом и сервером требуют нового сеанса Schannel. Задайте для этого элемента нулевое значение, чтобы использовать значение по умолчанию 36000000 миллисекунда (десять часов).
dwFlags
Содержит битовые флаги, управляющие поведением Schannel. Этот элемент может быть равен нулю или сочетанию следующих значений.
Значение | Значение |
---|---|
|
Только клиент.
Этот флаг является противоположностью SCH_CRED_MANUAL_CRED_VALIDATION и является частью поведения Schannel по умолчанию. |
|
Указать Schannel передать флаг CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL функции CertGetCertificateChain при проверке указанных учетных данных во время вызова AcquireCredentialsHandle (Schannel).
Windows Server 2003 и Windows XP/2000: Этот флаг не поддерживается. |
|
Только сервер.
Если этот флаг установлен, то полные подтверждения, выполненные с помощью этих учетных данных, не разрешают повторное подключение. Создается запись кэша, поэтому сеанс можно будет возобновить позже с помощью функции ApplyControlToken . |
|
При проверке отозванных сертификатов игнорируйте ошибки CRYPT_E_NO_REVOCATION_CHECK. Дополнительные ограничения см. в разделе Примечания. |
|
При проверке отозванных сертификатов игнорируйте ошибки CRYPT_E_REVOCATION_OFFLINE. Дополнительные ограничения см. в разделе Примечания. |
|
Только клиент.
Запретить Schannel проверки цепочки полученных сертификатов сервера. |
|
Только клиент.
Запретить Schannel автоматически предоставлять цепочку сертификатов для проверки подлинности клиента. |
|
Только клиент.
Запретите Schannel сравнивать указанное целевое имя с именами субъектов в сертификатах сервера. |
|
Только сервер.
Запретите Schannel использовать встроенные функции сопоставления системных сертификатов для сопоставления сертификатов клиента с учетной записью пользователя. |
|
При проверке цепочки сертификатов проверка все сертификаты для отзыва. Дополнительные ограничения см. в разделе Примечания. |
|
При проверке цепочки сертификатов не проверка корневой каталог для отзыва. Дополнительные ограничения см. в разделе Примечания. |
|
При проверке цепочки сертификатов проверка только последний сертификат для отзыва. Дополнительные ограничения см. в разделе Примечания. |
|
Только клиент.
Schannel пытается автоматически предоставить цепочку сертификатов для проверки подлинности клиента. Это значение противоположно SCH_CRED_NO_DEFAULT_CREDS. |
|
Поручите 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: Этот флаг не поддерживается. |
|
Schannel отправляет корневой сертификат как часть сообщения о сертификате.
Примечание Корневой сертификат, отправленный по сети клиентом или сервером Schannel, не является доверенным. Он должен быть проверен на соответствие доверенному хэшу корневого сертификата.
|
|
Указывает Schannel отключить известные слабые алгоритмы шифрования, наборы шифров и версии протоколов SSL/TLS, которые в противном случае могут быть включены для лучшего взаимодействия. |
|
Указывает Schannel выбрать только наборы шифров PSK и отключить все остальные наборы шифров. |
dwCredFormat
Schannel в режиме ядра поддерживает следующие значения.
Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP и Windows XP/2000: Этот флаг не поддерживается и должен быть равен нулю.
Значение | Значение |
---|---|
|
Элемент paCredпередаваемой структуры SCHANNEL_CRED должен быть указателем на массив байтов длиной 20, содержащий отпечаток сертификата. Предполагается, что сертификат находится в хранилище MY локального компьютера. |
|
Элемент 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) |