У меня есть Flask веб-сервис на базе REST-интерфейсов.
Мы написали класс веб-сервиса, унаследованный от flask.Flask
, и не можем предоставить весь код здесь, но вызов приложения веб-сервиса выглядит так: app.run(host=host, port=port, ssl_context='adhoc)
При этом, когда я пытаюсь выполнить запрос GET, я получаю ошибку SSL,
File "/opt/debesys/build/x86-64/debug/python/tt/pyrate/test/test_juno_sim.py", line 1077, in test_main_page
resp = requests.get(self.url, headers=self.headers, verify=False)
File "/opt/debesys/ext/linux/x86-64/release/lib/python2.7/site-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/opt/debesys/ext/linux/x86-64/release/lib/python2.7/site-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/opt/debesys/ext/linux/x86-64/release/lib/python2.7/site-packages/requests/sessions.py", line 456, in request
resp = self.send(prep, **send_kwargs)
File "/opt/debesys/ext/linux/x86-64/release/lib/python2.7/site-packages/requests/sessions.py", line 559, in send
r = adapter.send(request, **kwargs)
File "/opt/debesys/ext/linux/x86-64/release/lib/python2.7/site-packages/requests/adapters.py", line 382, in send
raise SSLError(e, request=request)
SSLError: [Errno 1] _ssl.c:507: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Я также попытался запустить приложение, например, app.run(host=host, port=port, ssl_context=('cert.pem', 'key.pem'))
Также используется модуль urllib2
для запроса на получение. вместо requests
module.
Но получаю ту же ошибку. Если я попытаюсь запустить приложение без ssl_context
и использовать http
, то получу ответ успешно.
Здесь я использую headers = {'Content-Type': 'application/json'}
и url = "https://127.0.0.1:{}".format(port)
[shrishinde@localhost debesys]$ wget https://127.0.0.1:47855/
--2020-02-19 13:03:25-- https://127.0.0.1:47855/
Connecting to 127.0.0.1:47855... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.
[shrishinde@localhost debesys]$ wget http://127.0.0.1:47855/
--2020-02-19 13:03:28-- http://127.0.0.1:47855/
Connecting to 127.0.0.1:47855... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31 [text/html]
Saving to: “index.html”
100%[=====================================================================================================================================================================>] 31 --.-K/s in 0s
2020-02-19 13:03:28 (6.25 MB/s) - “index.html” saved [31/31]
[shrishinde@localhost debesys]$
Обновление
Найденное решение: После наследования Flask мы переопределили метод Flask run
, и вместо него используется WSGIServer
ssl_context
Я должен использовать ssl_args .
С надеждой, что описанные выше шаги помогут пользователю диагностировать подобные проблемы, поэтому сохраняя вопрос.