2011-02-19 297 views
11

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

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

换句话说,我们真的很想拥有像SSL_CTX_load_verify_locations这样的函数,它需要X509 *而不是文件路径。

是否有这样的事情存在?还是有一种简单的方法可以将它们自己拼凑起来?我们似乎无法找到关于此的很多信息。

非常感谢您的任何建议!

+0

什么阻止您在调用SSL_CTX_load_verify_locations之前保存磁盘上的硬编码根证书? –

+0

没有什么可以阻止它:然而,我们是一个安全应用程序,并担心恶意干扰。特别是,如果很容易找到并覆盖我们的根证书文件,那么您可以阻止我们的任何SSLed事务。如果需要的话,我们会走这条路线,但能够将根证书编译到二进制文件本身是非常好的。 – DSII

+0

让您的根CA硬编码比保存在文件中更安全。 –

回答

18

功能SSL_CTX_get_cert_store()可以用来得到一个处理用于验证(X509_STORE *)证书存储和X509_STORE_add_cert()功能(在openssl/x509_vfy.h)然后可以用于直接添加证书,该证书存储区。

+0

完美!非常感谢你;这件作品奇妙。正是我在找什么。谢谢! – DSII

相关问题