C++/OpenSSL : Use root CA from buffer rather than file (SSL_CTX_load_verify_locations)

标签 c++ security ssl openssl ssl-certificate

我正在使用 OpenSSL 来验证服务器的证书。由于 OpenSSL 没有任何内置的根 CA,因此我们必须自己与我们的软件一起分发根 CA 证书(我们静态链接 OpenSSL)。通常,这样做的方法是分发 PEM 格式的证书文件并调用 SSL_CTX_load_verify_locations。

但是,此函数采用文件/目录路径并直接从文件系统读取根证书文件。我们真的希望能够将证书硬编码到我们的二进制文件中,而不是将其保存到文件系统中。

换句话说,我们真的希望有一个像 SSL_CTX_load_verify_locations 这样的函数,它接受 X509* 而不是文件路径。

这样的东西存在吗?还是有一种简单的方法可以自己破解它?我们似乎找不到太多关于此的信息。

非常感谢您的任何建议!

最佳答案

SSL_CTX_get_cert_store() 函数可用于获取用于验证的证书存储的句柄 (X509_STORE *),X509_STORE_add_cert() 函数(在 openssl/x509_vfy.h 中)然后可用于将证书直接添加到该证书存储区。

关于C++/OpenSSL : Use root CA from buffer rather than file (SSL_CTX_load_verify_locations),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052563/

相关文章:

c++ - 我无法在 Visual C++ 2010 Express Edition 中包含 <iostream>

c++ - 子进程中的内存泄漏怎么办

java - 由 : java. security.UnrecoverableKeyException: 无法恢复 key 引起

c# - 验证证书 TLS/SSL 服务器

c++ - 有一个不匹配的子串比较

php - 网站 Cookie - 是否存在任何安全问题?

security - 为什么电子邮件需要信封, "envelope"是什么意思?

ajax - 如何将持久登录 cookie 与并行 AJAX 请求结合起来?

ssl - 使用 ssl 在 Erlang 中将证书和 key 作为 der_bin() 传递

c++ - 操作中的整数溢出