我正在使用OpenSSL API创建SSL
连接。正如我们在SSL握手中所知,服务器或客户端会发生一系列证书身份验证。现在,对于客户端证书身份验证,客户端的证书和关联的私钥存储在Windows Certificate Store
。
将带有private key
的证书导入到商店中,然后将它们合并为pfx
格式,然后将pfx
文件导入到Windows证书库。现在,在使用mmc
管理单元导入此pfx文件时,它会询问我们是否要创建私钥exportable
。现在,OpenSSL开始实现SSL连接。
为此,我们必须创建SSL_CTX
对象,其中加载了所有与连接相关的属性。现在,要将私钥从Windows证书存储区加载到SSL_CTX
对象,我已使用exportable
标记了我要导出密钥的私钥Crypto API
。但我认为标记可导出的私钥没有任何意义,这是一个安全漏洞。
由于私钥将始终标记为Non-Exportable
所以,是否有任何OpenSSL等方法或API可以直接从Windows证书存储区读取和加载私钥到SST_CTX对象以进行SSL连接。
我知道肯定有一些方法可以让它工作,但我没有得到它。 我已经搜索了很多但没有得到必要的东西。
汇总问题 :证书存储区包含许多证书和关联的私钥。进行SSL连接时如何访问证书和私钥?
编辑 :我已经使用了名为
的openssl引擎API `EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
UI_METHOD *ui_method, void *callback_data);`
现在我如何获得私钥的key_id
,并且我认为这个api内部称为crypto api CryptExportKey
,如果私钥标记为non-exportable
,则此api会失败。