簡體   English   中英

Python ssl / https request.get調用失敗

[英]Python ssl/https requests.get call fails

我有以下python(2.7.14)代碼段,它在request.get調用上引發異常。 這是在FreeBSD服務器上運行的,其前端為apache,所有http流量都重定向到https。 請注意,我對python和此代碼都不是很熟悉。 當在我的PC上本地運行且沒有https / ssl時,以下各項也可以正常工作。

urlstr = getApipath()  + 'getData/' + id_data
logging.debug("URL used: %s", urlstr)
try:
   resp = requests.get(urlstr)
except Exception as e:
   logging.exception("caught exception str: " + str(e))

urlstr是一個api調用,正在使用https。 在同一主機的命令行上使用curl的相同api調用返回預期的有效json。

curl https://my.domain.com/is/api/getData/D_01

以下是運行此命令時包括stacktrace的日志輸出(顯然不使用真實URL)。 看起來像是ssl問題,但錯誤消息字符串為空無濟於事。 對此問題的任何幫助將不勝感激。

2018-03-28 10:37:51,530 URL used: https://my.domain.org/is/api/getData/D_01
2018-03-28 10:37:51,531 Starting new HTTPS connection (1): my.domain.org
2018-03-28 10:37:51,540 caught excpetion str: []
Traceback (most recent call last):
  File "/var/www/engines/controller/get_data.py", line 25, in getTemplate
    resp = requests.get(urlstr)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/usr/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 346, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 850, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python2.7/site-packages/urllib3/connection.py", line 314, in connect
    cert_reqs=resolve_cert_reqs(self.cert_reqs),
  File "/usr/local/lib/python2.7/site-packages/urllib3/util/ssl_.py", line 254, in create_urllib3_context
    context = SSLContext(ssl_version or ssl.PROTOCOL_SSLv23)
  File "/usr/local/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 379, in __init__
    self._ctx = OpenSSL.SSL.Context(self.protocol)
  File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 724, in __init__
    _openssl_assert(res == 1)
  File "/usr/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 67, in openssl_assert
    exception_from_error_queue(error)
  File "/usr/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
    raise exception_type(errors)
Error: []

升級到python加密模塊可以解決此問題。 安裝的版本是2.1.4。 原來有可用的較新版本-2.2.2,在安裝后可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM