我刚开始使用X.509证书.谁能告诉我如何在linux上验证证书?用例是我的应用程序在之前的会话中下载了证书,我必须在开始新会话之前检查它是否仍然有效(即,在存储之后没有过期或撤销).我理解这里不可能有完整的样本,但任何指针都会有用.
编辑:进一步调查显示另一个称为网络安全服务(NSS)的实用程序.在可用性方面,这与OpenSSL相比如何?此外,我正在寻找程序化解决方案,因为我将无法启动命令行实用程序.
从程序上来说,它可能意味着数小时搜索有点不好(或缺少)的文档,在整个网络上阅读代码示例,并且可能令人头疼.
要正确验证证书,您需要通知所有中间证书.通常您也会通知撤销列表(CRL),但这不是必需的.
那么,这就是你需要做的代码(OpenSSL):
> X509_STORE_new – 创建证书存储区;
> X509_STORE_CTX_new – 创建商店上下文;
> X509_STORE_add_cert – 将CA(和所有中介)证书添加到证书存储的可信列表中(注意:有一个查找/加载列表的函数);
> X509_STORE_add_crl – 将撤销的证书添加到证书库的CRL中(注意:与上面相同);
> X509_STORE_CTX_init – 初始化您的商店上下文,通知您的证书商店;
> X509_STORE_CTX_set_purpose – 如果需要,定义目的;
> X509_STORE_CTX_set_cert-告诉上下文您要验证的证书;
> X509_verify_cert – 最后,验证它;
> X509_STORE_CTX_cleanup – 如果要重用上下文来验证另一个证书,请将其清理并跳回(5);
>最后但并非最不重要的是,解除分配(1)和(2);
或者,可以使用X509_verify进行快速验证.但请注意,它仅对签名进行比较.
当我需要它时,花了我一整天的搜索,阅读和测试.然后我发现我需要的一切都在OpenSSL源代码中.因此,如果您需要一个示例,请直接访问openssl-xxx / apps / verify.c.
重要提示:永远不要使用MD5.要了解原因,请阅读Creating a rogue CA certificate.