Python httplib 禁用证书验证
我有以下代码可以使用:
def createCon(host,auth):
con = httplib.HTTPSConnection(host)
return con
def _readJson(con,url):
con.putrequest("GET",url)
...
r = con.getresponse()
这段代码在一个特定的服务器上运行正常,但在另一个服务器上却出现了SSLError(安全证书错误)。如果我在浏览器中打开这个网址,我需要接受证书,然后就能正常工作。但是,我该如何接受这个证书或者关闭它的验证呢?这个证书是自签名的,存储在一个Java的密钥库中,所以我更希望能关闭验证...
这段代码的目的是在请求之间重用连接,所以我不想对它进行太大的修改。
我该怎么做呢?我尝试修改一些例子,但没有成功。
con.putrequest("GET",url, verify=False)
or
con.request.verify=False
我不知道如何访问会话或请求对象,或者如何修改默认设置。
更新:这并没有帮助:
socket.ssl.cert_reqs='CERT_NONE'
嗯,实际上错误信息很奇怪...:
SSLError:'[Errno 1] _ssl.c:492: error:100AE081:elliptic curve routines:EC_GROUP_new_by_curve_name:unknown group'
祝好:
Bence
1 个回答
2
你的错误信息指向你使用的openssl版本中的一个bug。简单来说:客户端在宣传它拥有的一些功能,但实际上并没有这些功能。如果服务器选择了这样的功能,就会出现这个错误信息。解决这个问题的方法是升级你本地的openssl安装。如果你能控制服务器,服务器端也可以找到一种解决办法。