SSL и aiohttp: отключить проверку SSL не работает на Python 3.12Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SSL и aiohttp: отключить проверку SSL не работает на Python 3.12

Сообщение Anonymous »

У меня есть такой запрос от aiohttp:
async with aiohttp.ClientSession(auth=aiohttp.BasicAuth(self.user, self.password), timeout=aiohttp.ClientTimeout(connect=self.timeouts[0], sock_read=self.timeouts[1])) as session:
async with session.post(self.endpoint, data=query.encode('utf-8'), headers={'content-type' : 'application/xml'}, ssl=False) as response:
response.raise_for_status()
return await response.text()

Запрашиваемый сервер имеет сертификат SSL, но сертификат «плохой», к сожалению, это проблема программного обеспечения, с которым нам приходится работать. Так ssl=False используется для отключения проверки сертификата.
На Python 3.7.9 этот код работал без проблем, но при обновлении до Python 3.12.3 началась ошибка проверки SSL произойти в этот момент.
Traceback (most recent call last):

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 1116, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs, sock=sock)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 1149, in create_connection
transport, protocol = await self._create_connection_transport(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 1182, in _create_connection_transport
await waiter

File "C:\Program Files\Python312\Lib\asyncio\sslproto.py", line 578, in _on_handshake_complete
raise handshake_exc

File "C:\Program Files\Python312\Lib\asyncio\sslproto.py", line 560, in _do_handshake
self._sslobj.do_handshake()

File "C:\Program Files\Python312\Lib\ssl.py", line 917, in do_handshake
self._sslobj.do_handshake()

ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1000)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

File "c:\dev\my_project\server\controllers\rkeeper_cacher\update_task.py", line 38, in rkeeper_cacher_updater
await _wait_with_raise(tasks)

File "c:\dev\my_project\server\controllers\rkeeper_cacher\update_task.py", line 17, in _wait_with_raise
future.result()

File "c:\dev\my_project\server\controllers\rkeeper_cacher\service.py", line 124, in update_ref_if_need
if cache_version == -1 or cache_version != await self._get_ref_version(args.rk_ref_name):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\server\controllers\rkeeper_cacher\service.py", line 58, in _get_ref_version
xml = await self.rk_client.send(
^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\server\ext\rk7_api\async_client\client.py", line 35, in send
return await self.send_command(command)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\server\ext\rk7_api\async_client\client.py", line 24, in send_command
return await self.send_xml(command._serialize())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\server\ext\rk7_api\async_client\client.py", line 12, in send_xml
result = await self.query_helper.try_send_str(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\server\ext\rk7_api\async_client\query_helpers.py", line 24, in try_send_str
async with session.post(

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\client.py", line 1423, in __aenter__
self._resp: _RetType = await self._coro
^^^^^^^^^^^^^^^^

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\client.py", line 701, in _request
conn = await self._connector.connect(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 544, in connect
proto = await self._create_connection(req, traces, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 1050, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 1394, in _create_direct_connection
raise last_exc

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 1363, in _create_direct_connection
transp, proto = await self._wrap_create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "c:\dev\my_project\venv3-12\Lib\site-packages\aiohttp\connector.py", line 1120, in _wrap_create_connection
raise ClientConnectorSSLError(req.connection_key, exc) from exc

Cannot connect to host 127.0.0.1:3015 ssl: [[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1000)]: aiohttp.client_exceptions.ClientConnectorSSLError: Cannot connect to host 127.0.0.1:3015 ssl: [[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1000)]

Я думаю, проблема не в aiohttp, а в пакете Python ssl, но я не знаю, как решить эту проблему. Я пробовал отключить проверку SSL разными способами:
  • черезtrust_env=True;
  • для ClientSession создать свой собственный ssl_context, который отключает проверку SSL;
  • передать SSLContext с отключенной проверкой SSL вместо ssl=False для выполнения запрос.
У меня Python==3.12.3.
aiohappyeyeballs==2.4.4
aiohttp==3.11.10
aiosignal==1.3.1
attrs==24.2.0
frozenlist==1.5.0
idna==3.10
multidict==6.1.0
propcache==0.2.1
yarl==1.18.3


Подробнее здесь: https://stackoverflow.com/questions/792 ... ython-3-12
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SSL и aiohttp: отключить проверку SSL не работает на Python 3.12
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • SSL и aiohttp: отключить проверку SSL не работает на Python 3.12
    Anonymous » » в форуме Python
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Aiohttp: как получить данные (тело) на сервере aiohttp из Requests.get
    Anonymous » » в форуме Python
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • Как отключить проверку SSL в модуле запросов Python?
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Javax.net.ssl.sslprotocolexception: SSL Handshake прерван: ssl = 0x7fa2258640: сбой в библиотеке SSL, обычно ошибка прот
    Anonymous » » в форуме JAVA
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»