使用 Schannel 执行身份验证

所有 Schannel 协议都要求服务器提供来自受信任证书颁发机构证书, (CA) 作为其标识的证明。 此过程称为服务器身份验证。 客户端身份验证(客户端提供其标识证明)是可选的,服务器可以随时请求。

对服务器进行身份验证

Schannel 的默认行为是使用 WinVerifyTrust 函数验证服务器证书的完整性和所有权。 若要禁用此功能,请在调用 InitializeSecurityContext (Schannel) 函数时指定ISC_REQ_MANUAL_CRED_VALIDATION。 有关详细信息,请参阅 手动验证 Schannel 凭据

对客户端进行身份验证

Schannel 不验证客户端的证书;服务器必须手动执行此身份验证。 通常,服务器会在包含用户帐户信息的数据库中检查客户端的标识。 对于需要使用证书获取客户端帐户的服务器,请参阅 映射证书

当服务器请求客户端身份验证时,客户端必须向服务器发送其证书之一。 默认情况下,Schannel 将在不通知客户端的情况下尝试查找 客户端证书 并将其发送到服务器。 若要禁用此功能,客户端在调用 InitializeSecurityContext (Schannel) 函数时指定ISC_REQ_USE_SUPPLIED_CREDS。 指定此标志后,当服务器请求身份验证且客户端之前未提供证书时,Schannel 会将SEC_I_INCOMPLETE_CREDENTIALS返回到客户端。