2012-03-12 160 views
1

我試圖獲得對等身份驗證使用X509證書的工作/ M2Crypto.SSL的Python M2Crypto SSL:在無法獲取本地頒發者證書

  1. 我生成根CA(發行人&主題= ca_hostC) (:ca_hostC,主題:發行人hostC)客戶端(hostC)

  2. 我這個CA在本地簽署客戶端證書

  3. 我產生對承載企業社會責任,將其複製要將hostc,使用根CA簽名從第1步開始並移動ca_cert和簽署的證書給主持人。

我產生背景:

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命令行util驗證。

任何想法??

回答

0

想通了 - 不知怎的,我認爲深度= 0意味着無限的深度。 從openssl documentation

深度:設置的極限高達被驗證過程期間使用其中在鏈深度證書。如果證書鏈長於允許的限制,則超出限制的證書將被忽略。正在生成的錯誤消息,就好像這些證書將不存在,最有可能是 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證書。

+0

你應該接受你自己的答案。 – stephenmuss 2012-08-07 09:09:46

相關問題