структура 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 отключен в реестре, его нельзя включить с помощью этого элемента.
Этот элемент может содержать любой из следующих флагов.
dwMinimumCipherStrength
Минимальная сила шифра массового шифрования в битах, разрешенная для подключений.
Если этот элемент равен нулю, Schannel использует системное значение по умолчанию. Если этот член равен –1, включены только наборы шифров SSL3/TLS (также известные как шифр NULL).
dwMaximumCipherStrength
Максимальная сила шифра массового шифрования в битах, разрешенная для подключений.
Если этот элемент равен нулю, Schannel использует системное значение по умолчанию.
Если этот член равен –1, включены только наборы шифров SSL3/TLS (также известные как шифр 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, позволяющем разрешить раскрытие информации.
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 (include Schnlsp.h) |