«Соединение прервано», ошибка (104, «Сброс соединения по пиру». - PullRequest
0 голосов
/ 31 мая 2018

У меня есть машина LINUX с дистрибутивом OpenNao (на основе GENTOO).Эта машина имеет Python 2.7.3.У меня нет root-прав.Вы можете загрузить исполняемый образ в Virtualbox (OpenNAO OS VirtualBox 2.1.2) по следующей ссылке (вам, вероятно, придется создать учетную запись):

https://community.ald.softbankrobotics.com/en/resources/software/language/en-gb?sort_by=weight&sort_order=ASC&page=1

My проблема заключается в том, что я пытаюсь сделать запрос вызова на сервер AZURE с TLS 1.2 со следующим кодом:

import requests
url = "www.example-url.com" # it is not a real url
querystring = {"key":"value",}
headers = {'token': "4bfd740f482d48a3a894445eb6a85a83",'Username': "user",'Password':"password"}
#response = requests.request("GET", url, headers=headers, params=querystring)
response = requests.get(url, headers=headers, params=querystring, timeout=30)

, и я получаю следующую ошибку :

    /var/persistent/home/nao/.local/lib/python2.7/site-packages/urllib3/util/ssl_.py:339: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  SNIMissingWarning
/var/persistent/home/nao/.local/lib/python2.7/site-packages/urllib3/util/ssl_.py:137: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecurePlatformWarning
Traceback (most recent call last):
  File "heathrowFI-3.py", line 33, in <module>
    response = requests.get(url, headers=headers, params=querystring, timeout=30)
  File "/var/persistent/home/nao/.local/lib/python2.7/site-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/var/persistent/home/nao/.local/lib/python2.7/site-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/var/persistent/home/nao/.local/lib/python2.7/site-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/var/persistent/home/nao/.local/lib/python2.7/site-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/var/persistent/home/nao/.local/lib/python2.7/site-packages/requests/adapters.py", line 490, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))

Я попытался сделать запрос на других машинах (Windows, Ubuntu) с TLS 1.2, и результат в порядке.Чтобы получить версию TLS каждой машины, я использовал следующую команду

python -c "import json, urllib2; print json.load (urllib2.urlopen ('https://www.howsmyssl.com/a/check')) ['tls_version']"

Машина WINDOWS с Python 2.7 и TLS 1.2: Результат запроса был в порядке.

Машина UBUNTU с Python 2.7и TLS 1.2: результат запроса был в порядке.

Я думаю, что ошибка вызвана версией SSL TLS 1.0, используемой NaoQi.Сервер, к которому я делаю запрос, является Azure и поддерживает только TLS 1.2.Я проверил его TLS в браузере:

TLS ОТ СЕРВЕРА

У меня нет возможности обновить Python (у меня нет прав root).

Пожалуйста, знаете, как я могу заставить запрос работать на сервере?Должен ли я обновить TLS 1.0 до TLS 1.2 на компьютере NAOQI?Знаете ли вы, как его обновить?

1032 * Любая помощь или предложение приветствуются.

Заранее спасибо.

...