Как использовать самозаверяющий сертификат в Python3 - PullRequest
0 голосов
/ 27 декабря 2018

Я создал самозаверяющий сертификат в Windows Server 2012 R2 [WSUS Server - 10.66.194.98] [Dec15.cer] и включил SSL на всех веб-сайтах «Администрирование WSUS».Теперь я хочу использовать это в коде Python для связи с сервером.

Dec15.cer

И я сталкиваюсь с ошибкой ниже

ОШИБКА: узел недоступен [HTTPSConnectionPool (host = '10 .66.194.98 ', port = 8531): превышено максимальное количество попыток с URL: /ApiRemoting30/WebService.asmx (вызвано SSLError (SSLError (1,' [SSL: CERTIFICIL_FAIF__FIF_FIFT_FID_FIFT_FIFT_FID_REIFY_)] проверка сертификата не удалась (_ssl.c: 833) '),))]

Это то, что я пытался.

wsusutil.exe configuressl 10.66.194.98

Затем я скопировал Dec15.cer в корневой каталог python.и запустил следующий код

from requests import Session
from requests_ntlm import HttpNtlmAuth

user = 'administrator'
password = '******'
session = Session()
session.cert = session.verify = 'Dec15.cer'
# session.verify = False
session.auth = HttpNtlmAuth(user, password)
print(session.get("https://10.66.194.98:8531/ApiRemoting30",
              verify=session.verify,
              cert=session.cert))

1 Ответ

0 голосов
/ 01 января 2019

Хотя рассматриваемый сертификат Dec15.cer является самозаверяющим сертификатом, он не имеет базовых ограничений. CA: true:

$ openssl x509 -text -in Dec15.cer 
...
    X509v3 extensions:
        X509v3 Key Usage: 
            Key Encipherment, Data Encipherment
        X509v3 Extended Key Usage: 
            TLS Web Server Authentication

Но, как я уже сказал в комментарии, сертификаты предоставляютсяпараметр verify в requests должен быть сертификатами CA, т.е. иметь базовые ограничения CA:true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...