我正在试图弄清楚如何使用m2crypto,当链可能任意长时,从X509证书的公钥版本验证信任链回到一组已知的根CA之一。 SSL.Context模块看起来很有希望,除了我在SSL连接的上下文中没有这样做,我看不到如何使用传递给load_verify_locations的信息。
基本上,我正在寻找相当于的接口: openssl verify pub_key_x509_cert
在m2crypto中有类似的内容吗?
感谢。
答案 0 :(得分:2)
我修改了一个不同的M2Crypto补丁,通过这个补丁,我们可以针对一系列CA验证X509证书,并且允许使用证书撤销列表(CRL)。
允许使用M2Crypto进行链验证的核心是在X509_Store_Context上公开“verify_cert()”。 基本流程是:
我的补丁增强了CRL支持并允许链验证。 https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2
我们正在使用这个补丁作为Pulp的一部分,我们在下面有一个wiki页面,它分享了我们如何通过链进行验证的更多信息: https://fedorahosted.org/pulp/wiki/CertChainVerification
答案 1 :(得分:1)
有一个patch可能需要稍微更新,我需要进行单元测试才能检查。欢迎提供贡献!
另一种令人费解的方式是创建一个内存SSL会话,您可以在其中进行验证。 Twisted wrapper有效地以这种方式运作; Twisted充当愚蠢的网络管道而不知道有关数据的任何信息,M2Crypto对内存中的数据进行加密/解密,并在旁边进行证书验证。