C ++ / OpenSSL:从缓冲区而不是文件使用根CA(SSL_CTX_load_verify_locations)

时间:2011-02-19 18:07:45

标签: c++ security ssl openssl ssl-certificate

我正在使用OpenSSL来验证服务器的证书。由于OpenSSL在没有任何内置根CA的情况下发货,我们必须使用我们的软件(我们静态链接OpenSSL)自行分发根CA证书。通常,执行此操作的方法是以PEM格式分发证书文件并调用SSL_CTX_load_verify_locations。

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

换句话说,我们真的希望像SSL_CTX_load_verify_locations这样的函数采用X509 *而不是文件路径。

这样的事情存在吗?或者是否有一种简单的方法可以将它们自己组合在一起?我们似乎无法找到关于此的更多信息。

非常感谢您的任何建议!

1 个答案:

答案 0 :(得分:20)

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