Как разрешить python доверять самозаверяющему сертификату TLS моего сервера: ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась - PullRequest
0 голосов
/ 27 апреля 2018

Это не дубликат для этого поста . Я попробовал решения там, и ничего не работает в моем случае.

Я использую Windows и Python 3.6.5. У меня есть сценарий Python для клиента TLS. Сервер, к которому мне нужно подключиться, использует самозаверяющий сертификат. Когда я пытаюсь подключиться к нему с помощью моего скрипта, я получаю эту ошибку:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)

Мне нужно разобрать сертификат. Я попытался добавить содержимое сертификата .pem моего сервера в файл с именем: cacert.pem, который находится в: C:\Python36\Lib\site-packages\certifi, и снова запустить программу. Ничего не меняется. Вот мой сценарий. Помогите мне сделать так, чтобы клиент сделал исключение для этого сервера, так как я доверяю его сертификату.

import socket, ssl
import itertools

context = ssl.SSLContext() 
context.verify_mode = ssl.CERT_OPTIONAL 
context.check_hostname = False

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
domain="192.168.56.3" # my server
ssl_sock = context.wrap_socket(s, server_hostname=domain)
ssl_sock.connect((domain, 443))

print("====== peer's certificate ======")
try:
    cert = ssl_sock.getpeercert()
    print(cert)
except SSLError as e:
    print("Error: ",e)
ssl_sock.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...