我有以下代码可供使用:
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'
问候: 本斯
答案 0 :(得分:2)
您的错误消息指向您使用的openssl版本中的错误。见https://bugzilla.redhat.com/show_bug.cgi?id=1022468。简而言之:客户端会宣传它没有的功能,如果服务器选择了这样的功能,则会收到此错误消息。需要通过升级本地openssl安装来修复。如果您可以控制服务器,也应该可以在服务器端进行解决方法。