#python #ssl #docker #pyopenssl #sslv3
#python #ssl #docker #pyopenssl #sslv3
Вопрос:
Я использую docker-py и dockerpty для подключения и выполнения команд в контейнере ucp
. Все работает правильно, за исключением случаев, когда я пытаюсь перехватить псевдотерминал, выделенный в контейнере:
import docker
import dockerpty
import requests
client = docker.Client()
container = client.create_container(
image='busybox:latest',
stdin_open=True,
tty=True,
command='/bin/sh',
)
requests.packages.urllib3.disable_warnings()
command = "/bin/bash"
dockerpty.exec_command(client, container, command)
Однако, когда я выполняю команду, я могу подключиться к удаленному терминалу, но при вводе в терминал я получаю:
File "build/bdist.macosx-10.12-x86_64/egg/dockerpty/__init__.py", line 44, in exec_command
File "build/bdist.macosx-10.12-x86_64/egg/dockerpty/pty.py", line 334, in start
File "build/bdist.macosx-10.12-x86_64/egg/dockerpty/pty.py", line 373, in _hijack_tty
File "build/bdist.macosx-10.12-x86_64/egg/dockerpty/io.py", line 367, in flush
File "build/bdist.macosx-10.12-x86_64/egg/dockerpty/io.py", line 120, in read
File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 194, in recv
data = self.connection.recv(*args, **kwargs)
File "build/bdist.macosx-10.11-x86_64/egg/OpenSSL/SSL.py", line 1320, in recv
File "build/bdist.macosx-10.11-x86_64/egg/OpenSSL/SSL.py", line 1187, in _raise_ssl_error
File "build/bdist.macosx-10.11-x86_64/egg/OpenSSL/_util.py", line 48, in exception_from_error_queue
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_read_bytes', 'tlsv1 alert protocol version')]
Моя openssl
версия:
$ openssl version
OpenSSL 1.0.2j 26 Sep 2016
в то время как контейнер имеет:
# openssl version
OpenSSL 1.0.1t 3 May 2016
Ну, оба выше 1.0.1
. Все, что мне нужно, это отключить проверку версии. С requests
помощью библиотеки я мог бы просто сделать:
import requests
response = requests.get(<https url>, verify=False)
Моя Python
версия 2.7.12
и SSL
:
>>> import ssl
>>> print ssl.OPENSSL_VERSION
OpenSSL 1.0.2j 26 Sep 2016
также обновлен. Контейнер имеет Python 2.7.9
и SSL
:
>>> import ssl
>>> print ssl.OPENSSL_VERSION
OpenSSL 1.0.1t 3 May 2016
Я собираюсь создать форк dockerpty
и добавить изменения самостоятельно, если у кого-то нет лучшего предложения. Что я могу сделать, чтобы исправить эту проблему?