Python M2Crypto SSL:无法获取本地颁发者证书

2024-05-15 09:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用X509 certs/M2让对等身份验证正常工作加密.SSL在

  1. 我在客户机(hostC)上生成一个根CA(issuer&subject=CA_hostC)

  2. 我使用此CA在本地签署客户端证书(颁发者:CA_hostC,主题:hostC)

  3. 我在主机上生成一个CSR,将其复制到hostC,使用步骤1中的根CA对其进行签名,然后将CA证书和签名证书移动到主机上。

我生成上下文:

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)

我连接:

^{pr2}$

但是在客户机上我得到了

ERROR: 20
unable to get local issuer certificate

但是,当我打印从服务器接收到的证书的主题和颁发者时,我看到了正确的信息。另外,可以从openssl命令行util验证证书。在

有什么想法吗??在


Tags: ssl主题客户机certloadca证书x509
1条回答
网友
1楼 · 发布于 2024-05-15 09:06:16

我觉得深度=0意味着无限深。 来自openssl documentation

深度:设置验证过程中使用链中深度证书的限制。如果证书链的长度超过允许的长度,则忽略超出限制的证书。生成的错误消息就好像这些证书不存在一样,很可能会发出一个X509\u V_ERR_UNABLE_GET_ISSUER_CERT_local。深度计数是

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

等等。将“最大深度”设置为2将允许级别0、1和2。默认深度限制为9,允许对等证书和其他9个CA证书。

相关问题 更多 >