我正在使用OpenSSL来验证服务器的证书。由于OpenSSL在没有任何内置根CA的情况下发货,我们必须使用我们的软件(我们静态链接OpenSSL)自行分发根CA证书。通常,执行此操作的方法是以PEM格式分发证书文件并调用SSL_CTX_load_verify_locations。
但是,此函数采用文件/目录路径并直接从文件系统读取根证书文件。我们真的希望能够将证书硬编码到我们的二进制文件中,而不是将其保存到文件系统中。
换句话说,我们真的希望像SSL_CTX_load_verify_locations这样的函数采用X509 *而不是文件路径。
这样的事情存在吗?或者是否有一种简单的方法可以将它们自己组合在一起?我们似乎无法找到关于此的更多信息。
非常感谢您的任何建议!
答案 0 :(得分:20)
函数SSL_CTX_get_cert_store()
可用于获取用于验证的证书存储(X509_STORE *
)的句柄,然后X509_STORE_add_cert()
函数(在openssl/x509_vfy.h
中)可以用于将证书直接添加到该证书库。