繁体   English   中英

使用openssl api以编程方式将x509证书转换为可读格式

[英]programmatically convert an x509 certificate into human readable format using openssl api

在基于C的openssl客户端中,我能够与ssl服务器建立ssl连接,并使用检索服务器提供的ssl证书

X509* cert = SSL_get_peer_certificate( SSL *ssl);

现在,我想以易于阅读的形式转换此X509证书的内容。 是的,我可以使用以下命令简单地显示在控制台上:

X509_print(stdout,cert);

但我不想那样打印。 我想将证书内容捕获到一些char缓冲区中,以便在以自己选择的方式显示它之前可以进一步处理它。

尽我所能Google搜索,仍然一无所知。

有谁可以帮助我解决这个问题? 提前致谢。

获得X.509证书后,您可以使用各种X509函数,例如X509_get_version,X509_get_notBefore,X509_get_notAfter,X509_get_subject_name等。您可以在此处查看x509.h。

在某些情况下,例如X509_get_subject_name,您将使用X509_NAME。 在X509_NAME上,您可以使用X509_NAME_get_text_by_NID提取诸如“常用名”(通过使用NID_commonName),“组织”等字段。

这取决于您要显示的所有信息。 没有黑客。 这只是编程。 如果您需要更多信息,我也可以发布代码示例。 但是我认为这必须足以开始。

没有“ X.509证书的可读格式”之类的东西,这就是为什么您什么也找不到的原因。 每个软件提取不同的信息并以不同的方式显示它。 如另一个答案中所指出的,您可以通过调用各种函数来提取数据,然后进行打印。 或者,您可以将X509_print的输出定向为处理stdout以外的其他内容,以获取OpenSSL产生的内容。

X509_print应该采用BIO第一个参数。 X509_print_fp接受FILE*类的stdout

使用X509_print (生物风味)将其打印到生物内存中,然后使用BIO_get_mem_data提取内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM