为什么WinHttp不通过链发送客户端证书?

问题描述

我正在处理一个客户端服务器应用程序,其中服务器是Web服务,该服务基于SSL客户端证书执行客户端身份验证。客户端证书由Root-CA-> Intermedia-CA-1-> Intermedia-CA-2颁发。我将证书导入到用户证书存储和证书机器存储。

使用WinHttpSetoption(请求,WINHTTP_OPTION_CLIENT_CERT_CONTEXT,(LPVOID)pCertCtx,sizeof(* pCertCtx))设置客户端证书。

用户存储中搜索pCertCtx时,WinHttp会同时发送客户端证书和中间CA。

但是,从本地计算机存储区或内存中的证书存储区搜索pCertCtx时,WinHttp仅发送客户端证书,而不发送中间CA。

为什么WinHttp在这些方面有不同的行为?是否有任何强制WinHttp始终发送证书和链的选项?

解决方法

通过将中间介质ca添加到计算机存储中来解决。