2016-07-27 155 views
0

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

要设置等认证,我们加载使用SSL_CTX_load_verify_locations API的CA证书(CA存储在一个文件中)

但现在在我的情况下,CA是不是在文件中,我有一个X509 *issuerCert。 现在如何设置issuerCertSSL_CTX对象?

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

在上述方案中,我们使用SSL_CTX_get_cert_store创建X509_STORE *终于在其添加的X509 *issuerCert

现在我很困惑,因为将此证书添加到X509_STORE *只在商店中添加它,该证书信息将如何链接到SSL_CTX

由于最终我们通过SSL_CTXSSL_connect所有验证(握手)发生在幕后。那么当使用SSL_CTX_get_cert_store而不是 SSL_CTX_load_verify_locations时,CA证书信息 将如何达到SSL_connect

回答

1

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

您不是使用SSL_CTX_get_cert_store“创建”证书商店。您正在获取指向SSL_CTX一部分的证书存储区的指针。对SSL证书商店的任何更新都将反映在SSL_CTX中。请注意,API具有以SSL_CTX作为参数的以下语法:

X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx); 
+0

Thanx。请看看你是否可以在这里帮助我[链接](http://stackoverflow.com/questions/38655411/how-to-convert-x509-certificate-to-stack-ofx509-name/38662865#38662865) – User1234