我试图弄清楚如何使用 m2crypto 验证从 X509 证书的公钥版本返回到一组已知根 CA 的信任链,当链可能任意长时。SSL.Context 模块看起来很有希望,只是我不是在 SSL 连接的上下文中执行此操作,而且我看不到传递给 load_verify_locations 的信息是如何使用的。
本质上,我正在寻找相当于: openssl verify pub_key_x509_cert 的接口
m2crypto 中有类似的东西吗?
谢谢。
我试图弄清楚如何使用 m2crypto 验证从 X509 证书的公钥版本返回到一组已知根 CA 的信任链,当链可能任意长时。SSL.Context 模块看起来很有希望,只是我不是在 SSL 连接的上下文中执行此操作,而且我看不到传递给 load_verify_locations 的信息是如何使用的。
本质上,我正在寻找相当于: openssl verify pub_key_x509_cert 的接口
m2crypto 中有类似的东西吗?
谢谢。
我修改了一个不同的 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
There is a patch that might need to be updated slightly, and it would need unit tests for me to check it in. Contributions welcome!
Another convoluted way would be to create an in-memory SSL session where you do the validation. The Twisted wrapper effectively works this way; Twisted acts as dumb network pipe without knowing anything about the data, and M2Crypto encrypts/decrypts the data in memory, doing certificate validation on the side.