Ошибка SSL: Проверка сертификата не удалась из-за самоподписанного сертификата в цепочке сертификатов (_ssl.c:1007). Как это исправить?

Как исправить ошибку "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1007)", которая возникла при запуске вебсокета без изменений кода, если на компьютере отсутствует папка C:\Program Files\Common Files\SSL, хотя обычные запросы через requests.get выполняются успешно?
  • 3 марта 2024 г. 9:48
Ответы на вопрос 2
Для исправления ошибки, связанной с самоподписанным сертификатом в цепочке сертификатов, можно создать свой собственный сертификат и использовать его в своем коде. Вот как это можно сделать:

1. Создайте самоподписанный сертификат с помощью утилиты openssl. Для этого запустите следующую команду:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

2. Введите необходимую информацию для создания сертификата (страна, организация, домен и т.д.).

3. В вашем коде вы можете указать путь к созданным файлам сертификата и ключа:
```
import ssl

context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")

# Дальше идет ваш код для подключения через WebSocket с использованием созданного сертификата
```

Это позволит вашему коду использовать созданный вами самоподписанный сертификат при подключении через WebSocket и избежать ошибки, связанной с отсутствием доверенных центров сертификации для самоподписанных сертификатов.
Помогло такое: 
self.ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE,
                                    "check_hostname": False,
                                    "ssl_version": ssl.PROTOCOL_TLSv1,
                                    "ciphers": "DEFAULT:@SECLEVEL=1"})
Похожие вопросы