为什么 WinHttp 不发送带链的客户端证书?
Why WinHttp does not send client certificate with chain?
我正在开发一个客户端-服务器应用程序,其中服务器是基于 SSL 客户端证书执行客户端身份验证的 Web 服务。客户端证书由 Root-CA -> Intermedia-CA-1 -> Intermedia-CA-2 颁发。我将证书导入到用户证书存储和证书机器存储中。
使用 WinHttpSetOption(request, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, (LPVOID)pCertCtx, sizeof(*pCertCtx)) 设置客户端证书。
当从用户存储中搜索 pCertCtx 时,WinHttp 发送客户端证书和中间 CA。
但是当从本地计算机存储或内存中的证书存储中搜索 pCertCtx 时,WinHttp 只发送客户端证书,不发送中间 CA。
为什么 WinHttp 在这些方面有不同的行为?是否有任何选项可以强制 WinHttp 始终发送证书和链?
通过将 intermedia ca 添加到 machine store 解决。
我正在开发一个客户端-服务器应用程序,其中服务器是基于 SSL 客户端证书执行客户端身份验证的 Web 服务。客户端证书由 Root-CA -> Intermedia-CA-1 -> Intermedia-CA-2 颁发。我将证书导入到用户证书存储和证书机器存储中。
使用 WinHttpSetOption(request, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, (LPVOID)pCertCtx, sizeof(*pCertCtx)) 设置客户端证书。
当从用户存储中搜索 pCertCtx 时,WinHttp 发送客户端证书和中间 CA。
但是当从本地计算机存储或内存中的证书存储中搜索 pCertCtx 时,WinHttp 只发送客户端证书,不发送中间 CA。
为什么 WinHttp 在这些方面有不同的行为?是否有任何选项可以强制 WinHttp 始终发送证书和链?
通过将 intermedia ca 添加到 machine store 解决。