Python httplib disble证书验证

时间:2014-04-07 13:39:51

标签: python ssl ssl-certificate

我有以下代码可供使用:

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'

问候:    本斯

1 个答案:

答案 0 :(得分:2)

您的错误消息指向您使用的openssl版本中的错误。见https://bugzilla.redhat.com/show_bug.cgi?id=1022468。简而言之:客户端会宣传它没有的功能,如果服务器选择了这样的功能,则会收到此错误消息。需要通过升级本地openssl安装来修复。如果您可以控制服务器,也应该可以在服务器端进行解决方法。