众所周知,在SSL
使用openssl api创建连接时,我们创建了一个SSL_CTX
上下文对象,所有证书和密钥均已加载到该上下文对象中。
要设置对等验证,我们使用api加载CA证书SSL_CTX_load_verify_locations
(CA存储在文件中)
但是现在就我而言,CA不在文件中,我有一个X509 *issuerCert
。现在如何issuerCert
在SSL_CTX
对象中设置它?
我发现了这一点:-C ++ / OpenSSL:使用缓冲区而不是文件中的根CA(SSL_CTX_load_verify_locations)
在上面的解决方案中,我们正在创建一个X509_STORE *
using SSL_CTX_get_cert_store
,最后X509 *issuerCert
在其中添加。
现在我在这里感到困惑,因为添加此证书X509_STORE *
仅将其添加到存储中,该证书信息将如何链接到SSL_CTX
?
因为最终我们SSL_CTX
到达SSL_connect
了所有验证(握手)在幕后发生的地方。那么,SSL_connect
使用SSL_CTX_get_cert_store
而不是时该CA证书信息将如何到达SSL_CTX_load_verify_locations
?
在上述解决方案中,我们使用SSL_CTX_get_cert_store创建一个X509_STORE *,最后在其中添加X509 * issuerCert。
您不是在使用“创建”证书存储SSL_CTX_get_cert_store
。您将获得一个指向证书存储库的指针,该存储库是SSL_CTX的一部分。对证书存储的任何更新将反映在SSL_CTX中。请注意,API具有以下语法,该语法以SSL_CTX作为参数:
X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句