繁体   English   中英

如何验证python中的X509证书,包括CRL检查?

[英]How can I verify an X509 certificate in python including a CRL check?

我正在尝试使用python验证X509证书。 特别是当我这样做时,我需要检查CRL。

现在,您可以使用m2crypto执行此操作,但我找不到与openssl的-crl_check或-crl_check_all相对应的选项。

或者,我可以使用管道并直接调用openssl:

p1 = Popen(["openssl", "verify", "-CApath", capath, "-crl_check_all"], 
           stdin = PIPE, stdout = PIPE, stderr = PIPE)

message, error = p1.communicate(certificate)
exit_code = p1.returncode

但是,似乎openssl verify总是返回一个退出代码0,所以我不得不以某种方式比较字符串来判断验证是否成功,我不想这样做。

我错过了一些简单的东西吗?

谢谢。

好吧,我所做的就是:

p1 = Popen(["openssl", "verify", "-CApath", capath, "-crl_check_all"], 
           stdin = PIPE, stdout = PIPE, stderr = PIPE)

message, error = p1.communicate(certificate)

verified = ("OK" in message and not "error" in message)

这不是我想要的。 它通过了我的测试,但我不确定它是否会一直有效。 我不太了解C,读取openssl源代码并验证它。

如果有人能找到失败的情况,请发表评论。

我向M2Crypto提交了一个补丁,允许对一系列CA以及多个CRL进行X509证书验证。

https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2

有关详细信息,请参阅此文章: 如何使用m2crypto在非SSL设置中验证X509证书链

查看openssl的verify.c的源代码,它确实一直返回0,并且没有办法改变它。 但是,您不需要在命令行上调用openssl:库中有python绑定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM