1

X509 certs/M2Crypto.SSL を使用してピア認証を機能させようとしています

  1. クライアント (hostC) でルート CA (発行者 & サブジェクト = ca_hostC) を生成します

  2. この CA を使用してローカルでクライアント証明書に署名します (発行者: ca_hostC、件名: hostC)

  3. hostS で CSR を生成し、それを hostC にコピーし、ステップ 1 のルート CA を使用して署名し、ca_cert と署名付き証明書を hostS に移動します。

コンテキストを生成します:

import M2Crypto.SSL as SSL
ctx = SSL.Context('tlsv1')
ctx.load_cert('x.crt', 'private/x.key')
ctx.load_verify_locations(cafile='ca.crt')
ctx.set_verify ( SSL.verify_peer | SSL.verify_fail_if_no_peer_cert , 0, verify_callback)

私は接続します:

s = SSL.Connection(ctx)
s.connect(server_address)

しかし、クライアントで私は得る

ERROR: 20
unable to get local issuer certificate

ただし、サーバーから受信した証明書の件名と発行者を印刷すると、正しい情報が表示されます。また、証明書は openssl コマンド ライン ユーティリティから検証できます。

何かご意見は??

4

1 に答える 1

0

それを理解しました-どういうわけか私はdepth=0は無限の深さを意味すると思いました。opensslドキュメントから

深さ:検証手順中にチェーン内の深さ証明書が使用される制限を設定します。証明書チェーンが許可されているよりも長い場合、制限を超える証明書は無視されます。これらの証明書が存在しないかのようにエラーメッセージが生成されます。ほとんどの場合、 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLYが発行されます。深度カウントは

level 0: peer certificate, 
level 1: CA certificate, 
level 2: higher level CA certificate, 

等々。最大深度を2に設定すると、レベル0、1、および2が許可されます。デフォルトの深度制限は9であり、ピア証明書と追加の9つのCA証明書が許可されます。

于 2012-03-12T18:50:11.710 に答える