schannel.h) (SCH_CREDENTIALS 结构
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_CREDENTIALS 结构的 paCred 成员必须是指向包含证书指纹的长度为 20 的字节数组的指针。 假定证书位于本地计算机的“MY”存储中。 |
|
SCH_CREDENTIALS 结构的 paCred 成员指向SCHANNEL_CERT_HASH_STORE结构。 |
cCreds
paCred 数组中的结构数。
paCred
指向CERT_CONTEXT结构的指针数组。 每个指针指定一个证书,其中包含用于对应用程序进行身份验证的私钥。
客户端应用程序通常会传入一个空列表,并依赖于 Schannel 来查找适当的证书,或者稍后根据需要创建证书。
hRootStore
可选。 仅对服务器应用程序有效。 包含证书颁发机构自签名根证书的证书存储的句柄, (ca) 受应用程序信任。 此成员仅由需要客户端身份验证的服务器端应用程序使用。
cMappers
保留。
aphMappers
保留。
_HMAPPER
dwSessionLifespan
Schannel 在其会话缓存中保留会话的毫秒数。 经过此时间后,客户端与服务器之间的任何新连接都需要新的 Schannel 会话。 将此成员的值设置为零,以使用默认值 36000000 毫秒 (十小时) 。
dwFlags
包含控制 Schannel 行为的位标志。 此成员可以是零,也可以是以下值的组合。
值 | 含义 |
---|---|
|
仅限客户端。
此标志与SCH_CRED_MANUAL_CRED_VALIDATION相反,是 Schannel 默认行为的一部分。 |
|
在调用 AcquireCredentialsHandle 期间验证指定的凭据时,指示 Schannel 将 CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 标志传递给 CertGetCertificateChain 函数, (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 协议中存在的弱点。 有关详细信息,请参阅 上的 http://support.microsoft.com/kb/2643584帮助和支持知识库中的“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 密码套件并禁用所有其他密码套件。 |
cTlsParameters
pTlsParameters 数组中的条目计数。
指定超过 SCH_CRED_MAX_SUPPORTED_PARAMETERS 是错误的。
pTlsParameters
指向 TLS_PARAMETERS 结构的指针数组,这些结构指示 TLS 参数限制(如果有)。 如果未指定任何限制,则使用系统默认值。 建议应用程序依赖于系统默认值。
包含多个 cAlpnIds == 0 和 rgstrAlpnIds == NULL 的TLS_PARAMETERS 结构是错误的。
注解
若要使用SCH_CREDENTIALS结构,请定义SCHANNEL_USE_BLACKLISTS以及UNICODE_STRING和PUNICODE_STRING。 或者,包括 Ntdef.h、SubAuth.h 或 Winternl.h。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 1809 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 1809 [仅限桌面应用] |
标头 | schannel.h |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈