使用 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。