我正在尝试使用CentOS 6.5中的python建立与REST API的简单HTTPS连接。安装的是python-2.6.6-52.el6.x86_64和openssl-1.0.1e-16.el6_5.7.x86_64。
#!/usr/bin/env python import httplib, json, urllib, urllib2 # Gets the session ID to host c = httplib.HTTPSConnection("10.10.1.1") c.request("GET", "/services/rest/V2/?method=authenticate&username=myusername&password=mypasswd&format=json") response = c.getresponse() data = json.loads(response.read()) session_id = data['session_id'] print "Session Created. Session ID: " + session_id
但是,它给了我这个错误:
Traceback (most recent call last): File "./test3.py", line 7, inc.request("GET", "/services/rest/V2/?method=authenticate&username=myusername&password=mypasswd&format=json") File "/usr/lib64/python2.6/httplib.py", line 914, in request self._send_request(method, url, body, headers) File "/usr/lib64/python2.6/httplib.py", line 951, in _send_request self.endheaders() File "/usr/lib64/python2.6/httplib.py", line 908, in endheaders self._send_output() File "/usr/lib64/python2.6/httplib.py", line 780, in _send_output self.send(msg) File "/usr/lib64/python2.6/httplib.py", line 739, in send self.connect() File "/usr/lib64/python2.6/httplib.py", line 1116, in connect self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) File "/usr/lib64/python2.6/ssl.py", line 342, in wrap_socket suppress_ragged_eofs=suppress_ragged_eofs) File "/usr/lib64/python2.6/ssl.py", line 120, in __init__ self.do_handshake() File "/usr/lib64/python2.6/ssl.py", line 279, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [Errno 1] _ssl.c:492: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
这是一个openssl / python兼容性问题吗?我已经找到了最新的python和openssl RPM,并且我不愿意通过手动编译最新的tarball放弃RPM保留。