Python SSL «AttributeError: объект 'NoneType' не имеет атрибута 'get_unverified_chain'» [закрыто]Python

Программы на Python
Ответить
Anonymous
 Python SSL «AttributeError: объект 'NoneType' не имеет атрибута 'get_unverified_chain'» [закрыто]

Сообщение Anonymous »

Я пытаюсь настроить сервер и клиент, используя веб-сокеты с TLS. Я сделал фиктивный сертификат с помощью mkcert. Я выполнил базовую настройку на https://docs.python.org/3/library/ssl.html. Но сразу же получаю ошибку хранилища доверенных сертификатов и не могу от нее избавиться. Я использую ltsc Windows 10 с Python3.14.2

Что я пробовал:
import os
os.environ["SSL_NO_TRUSTSTORE"] = "1" # and "0"

ни то, ни другое не сработало. Ошибка осталась прежней
И на сервере, и на клиенте добавлено «do_handshake_on_connect = False» в функцию Wrap_socket(). Ошибка осталась прежней.
Проверил, что сертификаты обнаруживаются путем их перемещения. Сразу же появилась другая ошибка о том, что действительный сертификат не найден, поэтому я уверен, что путь правильный.
У клиента та же проблема и практически такая же ошибка, поэтому я предполагаю, что это что-то с моими сертификатами или с тем, как Python проверяет мои сертификаты. Но я не могу заставить его даже прекратить проверку моих сертификатов.
Заранее благодарю за любую помощь!
Код:
import socket
import select
import env
import random
import string
import ssl

IP = env.IP
PORT = env.PORT

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain('./SSL/server.pem', './SSL/server-key.pem')

# Create a socket
# socket.AF_INET - address family, IPv4, some other possible are AF_INET6, AF_BLUETOOTH, AF_UNIX
# socket.SOCK_STREAM - TCP, conection-based, socket.SOCK_DGRAM - UDP, connectionless, datagrams, socket.SOCK_RAW - raw IP packets
unsecure_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# SO_ - socket option
# SOL_ - socket option level
# Sets REUSEADDR (as a socket option) to 1 on socket
unsecure_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Bind, so server informs operating system that it's going to use given IP and port
# For a server using 0.0.0.0 means to listen on all available interfaces, useful to connect locally to 127.0.0.1 and remotely to LAN interface IP
unsecure_server_socket.bind((IP, PORT))

# This makes server listen to new connections
unsecure_server_socket.listen()
server_socket = context.wrap_socket(unsecure_server_socket, server_side=True)

Ошибка:
Traceback (most recent call last):
File "C:\Server.py", line 34, in
server_socket = context.wrap_socket(unsecure_server_socket, server_side=True)
File "C:\Users\Name\AppData\Local\Programs\Python\Python314\Lib\site-packages\pip\_vendor\truststore\_api.py", line 130, in wrap_socket
_verify_peercerts(ssl_sock, server_hostname=server_hostname)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Name\AppData\Local\Programs\Python\Python314\Lib\site-packages\pip\_vendor\truststore\_api.py", line 338, in _verify_peercerts
cert_bytes = _get_unverified_chain_bytes(sslobj)
File "C:\Users\Name\AppData\Local\Programs\Python\Python314\Lib\site-packages\pip\_vendor\truststore\_api.py", line 311, in _get_unverified_chain_bytes
unverified_chain = sslobj.get_unverified_chain() or ()
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\Name\AppData\Local\Programs\Python\Python314\Lib\ssl.py", line 1176, in get_unverified_chain
chain = self._sslobj.get_unverified_chain()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get_unverified_chain'


Подробнее здесь: https://stackoverflow.com/questions/798 ... verified-c
Ответить

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

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

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

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

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