gpt4 book ai didi

c - 使用 OpenSSL 将证书链从 PEM 文件加载到 STACK_OF(X509)*

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:22 24 4
gpt4 key购买 nike

使用 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 语法;“简单”意思是“避免较低级别的 BIO 和 ASN.1 API”)

但是,对于完整的证书链,可以使用 SSL_CTX_use_certificate_chain_file() 将它们加载到 SSL_CTX 中,然后可以使用 SSL_get_certificate( ),但是好像没有API functionSSL 上下文中检索证书链的其余部分。

那么从文件加载证书链的最佳方式是什么?

最佳答案

SSL_CTX_use_certificate_chain_file 函数将证书放入 SSL_CTX::cert 并将链中的所有附加证书(附加 CA 证书)放入 SSL_CTX::extra_certs 类型是 STACK_OF(X509)*,所以要获得额外的链:

STACK_OF(X509)* ca_stack = sslctx->extra_certs;

如果不直接在 SSL_CTX 结构中访问它,我找不到任何可以为您提供 extra_cets 字段的宏或函数,但是查看他们访问它的 OpenSSL 代码直接无处不在。

关于c - 使用 OpenSSL 将证书链从 PEM 文件加载到 STACK_OF(X509)*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com