如何使用.cer文件在OpenSSL库中初始化X509对象?

时间:2012-07-26 14:14:36

标签: openssl x509certificate x509

我正在尝试将OpenSSL的OCSP函数实现为described here,并且它需要X509对象作为参数。我所拥有的只是.cer格式的x.509证书文件。 如何在OpenSSL中使用.cer证书初始化X509对象? (如果重要的话,我在XCode中使用OpenSSL 1.0.0g。)

1 个答案:

答案 0 :(得分:5)

主要有两种情况。我将在这里介绍。

请注意,我假设您正在使用C ++。您选择的平台,如果它是理智的,应该具有这些功能的绑定。


在第一种情况下,您的证书文件采用所谓的PEM格式。如果您在文本编辑器中打开证书并查看一些带有人类可读标头的Base64编码数据,那就是PEM文件。在这种情况下,您想要的功能具有签名

X509 *PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u);

第一个参数是指向fopen()返回的FILE对象的指针。您可以将最后三个参数保留为NULL。此函数返回指向所创建的X509对象的指针,或者在出错时返回NULL


在第二种情况下,您的证书文件是所谓的DER形式。如果你在文本编辑器中打开证书并看到一些垃圾,那可能是一个DER文件。在这种情况下,您想要的功能具有签名

X509 *d2i_X509_fp(FILE *fp, X509 **x);

你应该可以留下第二个参数NULL。此函数返回指向所创建的X509对象的指针,或者在出错时返回NULL


官方的OpenSSL文档非常不完整。如果您正在寻找一本好的参考手册,我可以推荐O'Reilly的“OpenSSL网络安全”(ISBN 978-0-596-00270-1)。它是为OpenSSL 0.9.6 / 0.9.7编写的,并没有完全覆盖某些主题(例如CRL),但涵盖了所有重要的点并提供了示例代码。如果有的话,它会帮助你减少损失:)