Python запрос не подключать сертификат клиента в сеансе HTTPS - PullRequest
0 голосов
/ 28 апреля 2020

Я реализовал SOAP клиент в python с библиотекой zeep . Некоторые конечные точки требуют аутентификации сертификата на стороне клиента, поэтому необходимо прикрепить сертификат к сеансу запросов python. После поисков я нашел:

    from zeep import Client
    from zeep.transports import Transport
    from django.utils import timezone
    import requests
    ......
    session = requests.Session()    
    session.verify = False
    session.cert= ('pat_to_cert.pem','path_to_privKey.pem')
    transport = Transport(session=session)
    ....
    client = Client(wsdl=wsdl, transport=transport)
    send = getattr(service, service_name)
    result = send(**data)

Отладка рукопожатия TLS, сервер выдает Запрос сертификата , но клиент отвечает пустым сертификатом. Я уже проверил .pem файлы с openssl без ошибок.

Возможно ли, что запросы python не присоединяют сертификат, потому что он не распознает имя сервера? Как я могу заставить использовать этот сертификат для каждого запроса?

1 Ответ

0 голосов
/ 01 мая 2020

В вашем коде вы устанавливаете session.verify = False, поэтому проверка TLS отключена.

вам нужно установить:

session.verify = 'path/to/my/certificate.pem'

Кроме того, в качестве альтернативы вместо используя session.verify, вы можете использовать session.cert, если вы просто хотите использовать сертификат клиента TLS:

session.verify = True
session.cert = ('my_cert', 'my_key')

, пожалуйста, проверьте документацию для получения более подробной информации: https://docs.python-zeep.org/en/master/transport.html

надеюсь, это поможет

...