使用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.1API“)
但是,对于完整的证书链,可以使用SSL_CTX_use_certificate_chain_file()将它们加载到SSL_CTX中,然后可以使用SSL_get_certificate()检索第一个证书,但是似乎没有API function可以从SSL上下文中检索证书链的其余部分。
那么,从文件加载证书链的最佳方式是什么?
发布于 2012-03-21 08:03:32
函数SSL_CTX_use_certificate_chain_file将证书放入SSL_CTX::cert中,并将链中的所有附加证书(附加CA证书)放入类型为STACK_OF(X509)*的SSL_CTX::extra_certs中,因此要获取附加链:
STACK_OF(X509)* ca_stack = sslctx->extra_certs;我找不到任何宏或函数可以为您提供extra_cets字段,而不是在SSL_CTX结构中直接访问它,但是看看OpenSSL代码,他们确实可以在任何地方直接访问它。
https://stackoverflow.com/questions/9796402
复制相似问题