在使用WinCrypt证书进行身份validation的Windows上创buildSSL套接字?

validationSSL客户端连接时,服务器期望客户端提供证书。 在典型的企业Windows平台上,这些证书位于Windowsencryption存储的“个人”部分(使用此命令打开:'certmgr.msc')

OpenSSL不使用这些证书。 Windows确实提供了一个WinHTTP API,它提供了创buildSSL连接的能力,但是他们必须遵守HTTP请求/响应协议,是否有人知道Windows API允许程序员创build使用Windowsencryption存储证书进行身份validation的SSL连接,但是可以像OpenSSL套接字一样使用?谢谢。

Solutions Collecting From Web of "在使用WinCrypt证书进行身份validation的Windows上创buildSSL套接字?"

Openssl支持多种加密引擎,其中之一是Windows CAPI引擎。

这是我的机器上的openssl engine的结果。 CAPI是最后一个:

 (dynamic) Dynamic engine loading support (4758cca) IBM 4758 CCA hardware engine support (aep) Aep hardware engine support (atalla) Atalla hardware engine support (cswift) CryptoSwift hardware engine support (chil) CHIL hardware engine support (nuron) Nuron hardware engine support (sureware) SureWare hardware engine support (ubsec) UBSEC hardware engine support (padlock) VIA PadLock (no-RNG, no-ACE) (gost) Reference implementation of GOST engine (capi) CryptoAPI ENGINE 

OpenSSL引擎(3)手册页显示了如何在代码中选择引擎的示例代码。 构建OpenSSL可能有点棘手。 这里是一个批处理文件,它将产生一个静态构建,所有的引擎也是静态链接的。 不是部署的最佳选择,而是在处理CAPI细节的同时,让单个文件将您从DLL地狱中释放出来。

 @echo off setlocal call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" ::Get the current directory name in the variable builddir for /f "delims=\" %%a in ("%cd%") do set builddir=%%~nxa ::Configure build variable perl Configure VC-WIN32 enable-static-engine --prefix=. ::Generate makefile call ms\do_nasm.bat ::Build nmake -f ms\nt.mak ::Test nmake -f ms\nt.mak test ::Install nmake -f ms\nt.mak install endlocal 

Doh!事实证明, WinSock原生支持SSL,据推测它与Windows证书存储整合在一起。

编辑:不幸的是,这只适用于Windows Mobile

正如Luke在下面的评论中指出的,正确的方法是使用SChannel API。 这个讨厌的API在这里更详细的讨论。