X.509证书校验
这里讨论openssl中如何应用CRLs和来自证书体系的其他证书来进行证书校验。为此需要使用X.509包的功能函数。SSL协议实现已经处理了很多这里将要讨论的东西,即使如此,一些工作还是需要我们亲历亲为,特别是当我们希望在证书校验过程中使用CRLs的校验,大部分情况我们确实应该如此。
通常讲,证书可以通过其他证书体系一系列的证书来验证是合法的,比如CA证书和CRLs。Openssl使用X509_STORE对象来表示证书和废止证书的集合来完成此校验目的。除此之外,Openssl使用类型X509_STORE _CTX承载实际校验证书用到的数据。为了校验证书,我们首先创建一个X509_STORE,并且包含了所有可用证书和废止证书链信息。当需要校验终端证书时,我们将创建一个X509_STORE_CTX 来进行实际地校验。
与证书商店(X509_STORE)及其相关的上下文同样重要的一个对象是X509_LOOKUP_METHOD。此类型对象代表了查找证书或者废止证书的通用方法。比如X509_LOOKUP_file函数返回方法是专用于查找单个文件内证书相关的对象,而X509_LOOKUP_hash_dir函数返回方法用于在正确设置的Openssl CA目录中查找对象。X509_LOOKUP_METHOND对于创建X509_LOOKUP对象来说非常重要。这些对象聚集了其内部可以访问的证书集合。比如有一个证书目录,我们可以创建来自X509_STORE的X509_LOOKUP对象,并且返回值为X509_LOOKUP_hash_dir;然后这个X509_LOOKUP对象可以赋值给一个目录,这样X509_STORE 对象就可以访问由lookup聚集起来的所有证书和CRLs证书了。
简单回顾:一个X509_STORE 对象包含了X509_LOOKUP对象(多份),而X509_LOOKUP又是基于X509_LOOKUP_METHOND方法之上的。这就是证书商店可以访问证书和CRL数据了。因此store可以被用来创建X509_STORE_CTX 来执行验证操作了。