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

wrg*_*grs 5 python openssl m2crypto

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

wrg*_*grs 1

好吧,我所做的是这样的:

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)
Run Code Online (Sandbox Code Playgroud)

这不是我会选择的。它已经通过了我的测试,但我不确定它是否永远有效。我对 C 不太了解,无法阅读 openssl 源代码并验证它。

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