加载 CA 证书到 OpenSSL
Load CA Certificate to OpenSSL
正如我们所知,在使用 openssl api 创建 SSL
连接时,我们创建了一个 SSL_CTX
上下文对象,其中加载了所有证书和密钥。
要设置 对等验证 ,我们使用 SSL_CTX_load_verify_locations
api 加载 CA 证书(CA 是存储在文件中)
但现在我的 CA 不在文件中,我有 X509 *issuerCert
。
现在如何在 SSL_CTX
对象中设置此 issuerCert
?
我发现了这个 :-
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_CTX
传递给 SSL_connect
,所有验证(握手)都在幕后进行。那么CA证书信息如何
使用 SSL_CTX_get_cert_store
而不是时将达到 SSL_connect
SSL_CTX_load_verify_locations
?
In above solution we are creating an X509_STORE * using
SSL_CTX_get_cert_store and finally add the X509 *issuerCert in it.
您不是 "creating" 使用 SSL_CTX_get_cert_store
的证书商店。您将获得指向作为 SSL_CTX 一部分的证书存储的指针。对证书存储的任何更新都将反映在 SSL_CTX 中。请注意,API 具有以下语法,它将 SSL_CTX 作为参数:
X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);
正如我们所知,在使用 openssl api 创建 SSL
连接时,我们创建了一个 SSL_CTX
上下文对象,其中加载了所有证书和密钥。
要设置 对等验证 ,我们使用 SSL_CTX_load_verify_locations
api 加载 CA 证书(CA 是存储在文件中)
但现在我的 CA 不在文件中,我有 X509 *issuerCert
。
现在如何在 SSL_CTX
对象中设置此 issuerCert
?
我发现了这个 :- 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_CTX
传递给 SSL_connect
,所有验证(握手)都在幕后进行。那么CA证书信息如何
使用 SSL_CTX_get_cert_store
而不是时将达到 SSL_connect
SSL_CTX_load_verify_locations
?
In above solution we are creating an X509_STORE * using SSL_CTX_get_cert_store and finally add the X509 *issuerCert in it.
您不是 "creating" 使用 SSL_CTX_get_cert_store
的证书商店。您将获得指向作为 SSL_CTX 一部分的证书存储的指针。对证书存储的任何更新都将反映在 SSL_CTX 中。请注意,API 具有以下语法,它将 SSL_CTX 作为参数:
X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);