2010-04-13 71 views
5

我试图弄清楚如何使用m2crypto验证从X509证书的公钥版本返回到一个信任链当一系列已知根CA的链可能任意长时。 SSL.Context模块看起来很有希望,除了我没有在SSL连接的上下文中执行此操作,并且我无法看到如何使用传递给load_verify_locations的信息。如何使用m2crypto验证非SSL设置中的X509证书链

从本质上讲,我正在寻找这相当于接口: OpenSSL的核实pub_key_x509_cert

是否有类似的东西在m2crypto?

谢谢。

+0

相关的http://计算器。 com/q/4403012/4279 – jfs 2010-12-16 05:31:11

回答

1

有一个patch可能需要稍微更新,它需要单元测试来检查它。贡献值得欢迎!

另一个令人费解的方式是在验证过程中创建内存中的SSL会话。 Twisted wrapper有效地这样工作;扭曲的行为作为愚蠢的网络管道而不知道数据,M2Crypto加密/解密内存中的数据,在侧面进行证书验证。

2

我已经修改了一个不同的M2Crypto补丁,并且通过这个我们可以验证对CA链的X509证书,再加上它允许使用证书撤销列表(CRL)。

允许使用M2Crypto进行链验证的核心是在X509_Store_Context上公开“verify_cert()”。 基本流程是:

  1. 添加您的CA/CRL来一个X509_Store
  2. 使用X509_Store_Context验证感兴趣的证书

我的贴片提高CRL的支持,以及允许链式验证。 https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2

我们使用这个补丁作为纸浆的一部分,我们有下面这股对我们是如何用锁链做验证一些更多的信息维基页面: https://fedorahosted.org/pulp/wiki/CertChainVerification

+0

此外,我们有一组unittests显示下面的基本链验证: http://git.fedorahosted.org/git/?p=pulp.git;a=blob;f=playpen/certs /chain_example/test_chain_verify.py;hb=HEAD 设置测试数据的脚本位于: http://git.fedorahosted.org/git/?p=pulp.git;a=tree;f=playpen/certs/chain_examp le; hb = HEAD – 2012-01-25 18:06:18

+0

看来你的补丁不适用于openssl 0.9.8e。 – 2012-10-22 08:10:38