使用 c 中的 OpenSSL 库,将完整的证书链从 PEM 文件加载到内存中的最佳方法是什么?输入是一个连接了 1..n 个证书的 PEM 文件,输出应该是STACK_OF(X509)*
..
对于单个证书,加载它们的最简单方法如下:
SSL_CTX *sslctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_certificate_file(sslctx, "certificate.pem", SSL_FILETYPE_PEM);
SSL *ssl = SSL_new(sslctx);
X509 *crt = SSL_get_certificate(ssl);
(为清楚起见,省略了错误处理、资源释放和引用计数;使用 C99 语法;“easy”表示“避免较低级别的 BIO 和 ASN.1 API”)
但是,对于完整的证书链,SSL_CTX_use_certificate_chain_file()
可用于将它们加载到 中SSL_CTX
,然后可以使用 检索第一个证书SSL_get_certificate()
,但似乎没有API 函数SSL
可以从上下文中检索证书链的其余部分。
那么从文件加载证书链的最佳方法是什么?