【问题标题】:How do I use m2crypto to validate a X509 certificate chain in a non-SSL setting如何使用 m2crypto 在非 SSL 设置中验证 X509 证书链
【发布时间】:2010-04-13 03:29:04
【问题描述】:

我试图弄清楚如何使用 m2crypto 验证从 X509 证书的公钥版本到一组已知根 CA 的信任链,当链可能任意长时。 SSL.Context 模块看起来很有希望,只是我不是在 SSL 连接的上下文中执行此操作,而且我看不到传递给 load_verify_locations 的信息是如何使用的。

本质上,我正在寻找相当于以下内容的界面: openssl 验证 pub_key_x509_cert

m2crypto 中有类似的东西吗?

谢谢。

【问题讨论】:

标签: python cryptography x509certificate m2crypto x509


【解决方案1】:

我修改了一个不同的 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

我们将此补丁用作 Pulp 的一部分,我们在下面有一个 wiki 页面,其中分享了有关我们如何使用链进行验证的更多信息: https://fedorahosted.org/pulp/wiki/CertChainVerification

【讨论】:

【解决方案2】:

有一个patch 可能需要稍微更新,我需要对其进行单元测试才能签入。欢迎投稿!

另一种复杂的方法是创建一个内存 SSL 会话,您可以在其中进行验证。 Twisted wrapper 以这种方式有效地工作; Twisted 充当哑网络管道,对数据一无所知,M2Crypto 加密/解密内存中的数据,同时进行证书验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 2013-01-28
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多