使用OpenSSL和旺旺使用多个CA_DIR进行加载验证位置

时间:2011-10-04 00:30:45

标签: openssl x509

我希望将证书分成几个目录,而不是将大量证书放在一个目录中。目前我的服务器调用SSL_CTX_load_verify_locations(),只能传递一个CA_DIR。看起来其他人想要做类似的事情(例如,请参阅http://www.mail-archive.com/openssl-users@openssl.org/msg55557.html),但我找不到相应解决方案的任何文档。

所以我盯着SSL_CTX_load_verify_locations()的源代码,它是X509_STORE_load_locations()的包装器,它调用X509_STORE_add_lookup()然后调用X509_LOOKUP_add_dir()一次。那么我可以简单地写一些类似于X509_STORE_load_locations()但是多次调用X509_LOOKUP_add_dir()(即每个目录一次)吗?

请告知。

PS:我在哪里可以找到关于OpenSSL提供的X509 ... API的文档?在www.openssl.org上,我只能找到http://www.openssl.org/docs/crypto/x509.html#,但我找不到任何指向X509_LOOKUP_add_dir()或openssl x509标题中公开的其他函数/宏的链接。

2 个答案:

答案 0 :(得分:3)

由于当前答案缺少代码示例(sslctx是您的SSL_CTX实例):

X509_STORE *store = SSL_CTX_get_cert_store(sslctx);
X509_LOOKUP *lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir());
X509_LOOKUP_add_dir(lookup, "/first/cert/dir", X509_FILETYPE_PEM);
X509_LOOKUP_add_dir(lookup, "/second/cert/dir", X509_FILETYPE_PEM);
X509_LOOKUP_add_dir(lookup, "/another/cert/dir", X509_FILETYPE_PEM); 

[当我搜索如何添加multiple CA paths in libcurl]

时,我来到这里

答案 1 :(得分:0)

我问道:

  

所以我可以简单地写一些类似于X509_STORE_load_locations()的内容但是调用   X509_LOOKUP_add_dir()多次(即每个目录一次)?

答案是肯定的,我编写的内容有效。

不过,如果有人能指出我在openssl上的X509 ... API的一些文档,那将非常感激!