我对openssl很新。到目前为止,我已经阅读了IBM和HP提供的教程,并获得了有关如何使用openssl API的一些实践。
我的项目是使用加载了数字证书的USB安全内存令牌,通过客户端浏览器上的ActiveX控件验证客户端的身份。现在的问题是,供应商提供的令牌库仅支持从令牌读取和写入字符串。但是,我只知道如何从具有SSL_CTX_load_verify_locations()
或SSL_CTX_use_certificate_file()
功能的文件加载证书。
我唯一能想到的是将BEGIN X509 CERTIFICATE
和END X509 CERTIFICATE
之间的大块加密内容写入令牌并将其作为字符串读出。现在我真的需要一些帮助来将此字符串加载到openssl中的SSL_CTX
对象ctx
中。
顺便说一句,BEGIN X509 CERTIFICATE
和END X509 CERTIFICATE
之间的长篇内容是否包含所谓的公钥和除私钥之外的其他信息(如到期日期)?如果我错了,请纠正我:)
非常感谢任何帮助!
Z.Zen
答案 0 :(得分:0)
如果您可以向令牌读取和写入任意二进制blob,那么您只需将证书和私钥存储为ASN1格式,然后使用SSL_CTX_use_certificate_ASN1()
和SSL_CTX_use_PrivateKey_ASN1()
加载它们(按此顺序) 。请注意,您需要同时执行这两项操作,因为证书不存储私钥;它必须单独存放。