使用CAPI和OpenSSL的相互SSL身份验证

使用CAPI和OpenSSL的相互SSL身份验证,openssl,smartcard,private-key,cryptoapi,mutual-authentication,Openssl,Smartcard,Private Key,Cryptoapi,Mutual Authentication,我需要使用OpenSSL(通过libcurl)从我的客户端应用程序(C++)执行相互SSL身份验证。我正在通过MS Crypto API(CAPI)和ActivClient驱动程序从智能卡读取证书,并使用CAPI进行证书链验证(由于证书链位于MS cert store中,因此使用OpenSSL验证证书链似乎更容易)。我可以将客户端证书从CAPI转换为OpenSSL,但私钥有问题 似乎,为了让服务器验证客户端的证书,我需要将客户端证书私钥公开给OpenSSL。现在还不太清楚我应该怎么做,甚至我是否

我需要使用OpenSSL(通过libcurl)从我的客户端应用程序(C++)执行相互SSL身份验证。我正在通过MS Crypto API(CAPI)和ActivClient驱动程序从智能卡读取证书,并使用CAPI进行证书链验证(由于证书链位于MS cert store中,因此使用OpenSSL验证证书链似乎更容易)。我可以将客户端证书从CAPI转换为OpenSSL,但私钥有问题


似乎,为了让服务器验证客户端的证书,我需要将客户端证书私钥公开给OpenSSL。现在还不太清楚我应该怎么做,甚至我是否能做到(这可能取决于证书中是否将密钥标记为“可导出”)。我可以尝试按照中的建议进行操作,并希望密钥可以导出,但我想知道我是否走上了正确的道路

我在这个话题上搜索了很多,但没有找到任何确凿的信息


任何建议和/或建议都将不胜感激

“我可以尝试按照建议将windows应用商店中的私钥转换为PEM(用于OpenSSL)…”——(在这里使用旧内存…——我似乎记得导出时必须包装私钥。为此,请使用并选择
hExpKey
作为指数为1或0的RSA密钥(这就是诀窍)。导出目标密钥后,请让OpenSSL使用它。这与您想要尝试和执行的操作类似:。