我使用以下代码行来请求HTTPS
网址。
r = requests.get(
'https://xxxx.xxx.xxx',
cert='/Users/xxxx/Documents/xxxx.pem')
但是它给我发了这个错误:
SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))
我可以通过命令加载证书:
openssl x509 -in xxxx.pem -text -noout
并检查证书中的私钥:
openssl rsa -in xxxx.pem -check
我不知道这里缺少什么让这个电话工作。 chrome中的相同请求工作正常。
谢谢! 昆
答案 0 :(得分:0)
如果'/Users/xxxx/Documents/xxxx.pem'
是检查'https://xxxx.xxx.xxx'
证书所必需的CA cert,则需要将其传递给参数requests
中的verify
:
r = requests.get(
'https://xxxx.xxx.xxx',
verify='/Users/xxxx/Documents/xxxx.pem',
)
如果它是client verification的证书,则不仅需要传递证书的路径,还需要传递私钥的路径:
r = requests.get(
'https://xxxx.xxx.xxx',
cert=('/Users/xxxx/Documents/cert.pem', '/Users/xxxx/Documents/privkey.pem'),
)