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

如何使用.cer文件初始化OpenSSL库中的X509对象?,openssl,x509certificate,x509,Openssl,X509certificate,X509,我正在尝试实现OpenSSL的OCSP函数,它需要X509对象作为参数。我只有.cer格式的x.509证书文件。 如何在OpenSSL中使用.cer证书初始化X509对象?如果有必要的话,我在XCode中使用OpenSSL 1.0.0g。主要有两种情况。这两个我都讲 请注意,我假设你使用C++。如果您选择的平台是正常的,那么应该为这些函数提供绑定 在第一种情况下,您的证书文件是所谓的PEM格式。如果您在文本编辑器中打开一个证书,并看到一些带有人类可读头的Base64编码数据,则这是一个PEM文件

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

主要有两种情况。这两个我都讲

请注意,我假设你使用C++。如果您选择的平台是正常的,那么应该为这些函数提供绑定

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

X509 *PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u);
第一个参数是指向fopen返回的文件对象的指针。您可以将最后三个参数保留为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,但涵盖了所有要点并提供了示例代码。如果有什么不同的话,它将帮助你减少迷路:

主要有两种情况。这两个我都讲

请注意,我假设你使用C++。如果您选择的平台是正常的,那么应该为这些函数提供绑定

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

X509 *PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u);
第一个参数是指向fopen返回的文件对象的指针。您可以将最后三个参数保留为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,但涵盖了所有要点并提供了示例代码。如果有的话,它将帮助您减少迷失:

谢谢!回答得很好,正是我需要的。谢谢!回答得很好,正是我需要的。