我正在使用Python的requests库来执行client side authentication with certificates。方案如下:CA1
已为中间CA颁发证书(CA2
),CA2
已颁发我的客户证书CLIENT
。我正在连接的服务器信任CA1
的证书(但没有CA2
的证书)。当我使用时:
requests.get('https:..', cert=('/path/CLIENT.cert', '/path/CLIENT.key'))
我收到错误“证书验证失败”。我认为这是因为服务器无法检索CA2
的证书。
但是,我无法找到将CA2
的证书发送到服务器的方法。如果我将其包含在CLIENT
中,则会收到有关私钥和证书不匹配的错误消息。我还尝试在verify
参数中包含证书链,但结果似乎没有任何差别(据我所知,verify
参数中的证书用于服务器边认证)。
虽然我认为这一定是一种非常常见的情况,但我无法找到解决方案......
PD:如果我使用openssl和完整的证书链验证CLIENT
的证书,则验证成功(因此证书本身没有问题)。