加载 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);