使用python请求进行代理连接的SSL证书验证

时间:2014-04-10 08:35:44

标签: ssl proxy python-requests

我尝试使用python请求库通过代理连接到网站,例如www.yahoo.com。因此,我将代理设置定义为:

HOST = 'host'
PORT = 1234 # random port I have used here
USER = 'user'
PASS = 'password'
PROXY = "%s:%s@%s:%d" % (USER, PASS, HOST, PORT)
PROXY_DICT = {
    "http"  : 'http://' + PROXY, 
    "https" : 'https://' + PROXY, 
    }

我使用以下代码行:

requests.get('http://www.yahoo.com', proxies=proxy_dict)

这不会引发异常,但响应文本是来自代理的错误页面,说明"确保您已安装证书" 。我有一个证书" certificate.crt" ,与Chrome浏览器一起使用时运行正常。证书是自签名的。我尝试了一些会引起错误的事情。

当使用crt文件作为验证参数时,出现以下错误:

SSLError: [Errno bad ca_certs: 'certificate.crt'] []

当使用crt文件作为证书参数时,出现以下错误:

Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_certificate_file', 'PEM lib')]

我设法获得 .pem文件(我不确定,但可能是使用密钥和crt文件生成的) 。将它与cert param一起使用时,它不会抛出错误,但响应文本再次显示文本" ... 确保已安装证书 ...&# 34;

使用带有验证参数的 .pem文件时,出现以下错误:

SSLError: [Errno bad handshake] [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]

现在,当我提到请求文档时,我发现我可以使用两个参数verify和cert。我在这里用什么?怎么样?

0 个答案:

没有答案