将X.509证书存储在c-string中并将其加载到SSL_CTX对象中?

时间:2010-06-25 08:22:13

标签: c openssl

我对openssl很新。到目前为止,我已经阅读了IBM和HP提供的教程,并获得了有关如何使用openssl API的一些实践。

我的项目是使用加载了数字证书的USB安全内存令牌,通过客户端浏览器上的ActiveX控件验证客户端的身份。现在的问题是,供应商提供的令牌库仅支持从令牌读取和写入字符串。但是,我只知道如何从具有SSL_CTX_load_verify_locations()SSL_CTX_use_certificate_file()功能的文件加载证书。

我唯一能想到的是将BEGIN X509 CERTIFICATEEND X509 CERTIFICATE之间的大块加密内容写入令牌并将其作为字符串读出。现在我真的需要一些帮助来将此字符串加载到openssl中的SSL_CTX对象ctx中。

顺便说一句,BEGIN X509 CERTIFICATEEND X509 CERTIFICATE之间的长篇内容是否包含所谓的公钥和除私钥之外的其他信息(如到期日期)?如果我错了,请纠正我:)

非常感谢任何帮助!

Z.Zen

1 个答案:

答案 0 :(得分:0)

如果您可以向令牌读取和写入任意二进制blob,那么您只需将证书和私钥存储为ASN1格式,然后使用SSL_CTX_use_certificate_ASN1()SSL_CTX_use_PrivateKey_ASN1()加载它们(按此顺序) 。请注意,您需要同时执行这两项操作,因为证书不存储私钥;它必须单独存放。