【问题标题】:Python HTTPS/SSL error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol versionPython HTTPS/SSL 错误:1407742E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报协议版本
【发布时间】:2014-04-15 18:48:05
【问题描述】:

我正在尝试使用 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, in <module>
    c.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。

【问题讨论】:

    标签: python ssl


    【解决方案1】:

    如果您将服务器配置为仅接受 TLS1.2 但在客户端不支持 TLS1.2,则可能会发生这种情况。至少 Ubuntu 已经修补了他们的 openssl,使其不在客户端提供 TLS1.1,而只在服务器端解决某些主机的一些错误。也许 RHEL/CentOS 也是。

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2022-08-02
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多