SSL连接,Windows证书存储和CAPI引擎

时间:2015-12-31 17:49:39

标签: ssl openssl private-key cryptoapi certificate-store

我正在使用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会失败。

0 个答案:

没有答案