5

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を返すように思われるため、検証が成功したかどうかを確認するために文字列を何らかの方法で比較する必要があります。

ここで簡単なものが欠けていますか?

ありがとう。

4

3 に答える 3

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)

それは私が選んだものではありません。テストに合格しましたが、常に機能するかどうかはわかりません。私はopensslソースコードを読んでそれを検証するのに十分なCを知りません。

これが失敗する状況を誰かが見つけたら、コメントしてください。

于 2011-10-12T10:35:11.370 に答える
1

M2Cryptoにパッチを送信しました。これにより、CAのチェーンおよび複数のCRLに対するX509証明書の検証が可能になります。

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

詳細については、この投稿を参照してください: m2cryptoを使用して非SSL設定でX509証明書チェーンを検証するにはどうすればよいですか?

于 2012-01-27T13:36:54.417 に答える
0

opensslのverify.cのソースコードを見ると、実際には常に0が返され、それを変更する方法はありません。ただし、コマンドラインでopensslを呼び出す必要はありません。ライブラリにはPythonバインディングがあります。

于 2011-10-05T11:10:56.203 に答える