CryptoAPI 2.0 私钥
Schannel 凭据在内部表示为 CERT_CONTEXT 结构。 Schannel 使用证书的 CERT_KEY_PROV_INFO_PROP_ID 属性查找与特定证书上下文关联的 私钥。 使用此属性,Schannel 通过调用 CryptAcquireContext 函数访问 私钥。 有关详细信息,请参阅 公钥/私钥对。
每个 Schannel 凭据都包含对一个或多个私钥的引用,每个私钥都与特定证书相关联。 私钥 处理方式大不相同,具体取决于凭据是用于客户端还是服务器。
客户端私钥
客户端 私钥 由正在使用 加密服务提供程序(CSP)管理。 客户端私钥通常由类型为 PROV_RSA_FULL 或PROV_RSA_SIGNATURE的 CSP 存储。
如果客户端应用程序手动调用CryptAcquireContext,则在调用 acquireCredentialsHandle之前,客户端必须使用 CERT_KEY_PROV_HANDLE_PROP_ID 属性将 CSP 的句柄绑定到证书上下文。 如果 Schannel 找到此属性集,则它不使用CERT_KEY_PROV_INFO_PROP_ID属性。
服务器私钥
服务器私钥由以下 CSP 之一存储:
- PROV_RSA_SCHANNEL
- PROV_DH_SCHANNEL
- PROV_FORTEZZA CSP
CSP 的选择取决于所选 密钥交换算法。 服务器私钥的类型必须为AT_KEYEXCHANGE。