将CA证书加载到OpenSSL

时间:2016-07-27 15:42:24

标签: openssl certificate x509certificate

正如我们在使用openssl api创建SSL连接时所知,我们创建了一个SSL_CTX上下文对象,其中加载了所有证书和密钥。

要设置对等验证,我们使用SSL_CTX_load_verify_locations api加载 CA证书(CA存储在文件中)

但是现在在我的情况下,CA不在档案中,我有一个X509 *issuerCert。 现在如何在issuerCert对象中设置此SSL_CTX

我发现了这个: - C++/OpenSSL: Use root CA from buffer rather than file (SSL_CTX_load_verify_locations)

在上述解决方案中,我们使用X509_STORE *创建SSL_CTX_get_cert_store,最后在其中添加X509 *issuerCert

现在我很困惑,因为将此证书添加到X509_STORE *仅将其添加到商店中,该证书信息将如何与SSL_CTX相关联?

最终我们将SSL_CTX传递给SSL_connect,其中所有验证(握手)都在幕后发生。那么CA证书信息如何 使用SSL_connect而不是SSL_CTX_get_cert_store时会转到SSL_CTX_load_verify_locations name[5]="";

1 个答案:

答案 0 :(得分:2)

  

在上面的解决方案中,我们正在使用创建X509_STORE *   SSL_CTX_get_cert_store,最后在其中添加X509 * issuerCert。

你不是"创造"使用SSL_CTX_get_cert_store的证书库。您将获得指向SSL存储的指针,该存储是SSL_CTX的一部分。对证书库的任何更新都将反映在SSL_CTX中。请注意,API具有以下语法,它将SSL_CTX作为参数:

X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);