I'm using Python's requests library to perform client side authentication with certificates. The scenario is the following: CA1
has issued a certificate for an intermediate CA (CA2
) and CA2
has issued my client's certificate CLIENT
. The server I'm connecting to trusts CA1
's cert (but does not have CA2
's cert). When I use:
requests.get('https:..', cert=('/path/CLIENT.cert', '/path/CLIENT.key'))
I get an error "certificate verify failed". I assumed that's because the server can not retrieve CA2
's cert.
However, I'm unable to find a way to send CA2
's cert to the server. If I include it in CLIENT
, I get an error about private key and cert mismatch. I have also tried to include the chain of certificates in the verify
parameter but there does not seem to be any difference on the result (as far as I understand, certs in the verify
parameter are used for server side authentication).
Although I think this must be a quite common scenario, I'm unable to find a solution...
PD: If I verify CLIENT
's cert with openssl and the full chain of certificates the validation is successful (so there is no problem with the certificates themselves).