首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenSSL将证书链从PEM文件加载到STACK_OF(X509)*中

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

Stack Overflow用户
提问于 2012-03-21 07:08:52
回答 1查看 4.9K关注 0票数 2

使用c中的OpenSSL库,将完整的证书链从PEM文件加载到内存的最佳方法是什么?输入是连接了1..n个证书的单个PEM文件,输出应该是STACK_OF(X509)*

对于单个证书,加载它们的最简单方法如下:

代码语言:javascript
复制
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.1API“)

但是,对于完整的证书链,可以使用SSL_CTX_use_certificate_chain_file()将它们加载到SSL_CTX中,然后可以使用SSL_get_certificate()检索第一个证书,但是似乎没有API function可以从SSL上下文中检索证书链的其余部分。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 08:03:32

函数SSL_CTX_use_certificate_chain_file将证书放入SSL_CTX::cert中,并将链中的所有附加证书(附加CA证书)放入类型为STACK_OF(X509)*SSL_CTX::extra_certs中,因此要获取附加链:

代码语言:javascript
复制
STACK_OF(X509)* ca_stack = sslctx->extra_certs;

我找不到任何宏或函数可以为您提供extra_cets字段,而不是在SSL_CTX结构中直接访问它,但是看看OpenSSL代码,他们确实可以在任何地方直接访问它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9796402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档