Я пишу приложение Flask, которое подключается к внешней службе мыла, использующей TLS v1.2. Я использую Python 2.7 и запрашиваю библиотеку в версии 2.18.1.
Я связался с владельцем сервера, и он сказал мне, что мне нужно включить несколько клиентских сертификатов в соединение TLS. Это цепочка из 3 сертификатов, которые у меня есть в отдельных файлах .pem. (root + indermediate + мой клиентский сертификат). Сервер не впустит меня, если у меня будет только последний.
Я протестировал это с SoapUI и Wireshark, и это правда. Я получаю ответ только тогда, когда предоставляю всю цепочку из 3 сертификатов. Я получаю сообщение об ошибке от сервера при передаче только моего сертификата клиента.
Из запросов документации вы можете прочитать, что в качестве сертификата клиента вы можете передать только один сертификат, используя:
session = requests.session()
session.cert = ('/path/client_cert.pem', '/path/private_key.pem')
response = session.post(SERVICE_URL, data=XML_CONTENT, headers=HEADERS)
Я получаю сообщение об ошибке, даже если мой файл "client_cert.pem" представляет собой комплект из 3 сертификатов (так же, как вы делаете это в session.verify с сертификатами CA). На Wireshark я вижу, что только первый из них используется в соединении TLS.
Есть ли способ включить подключение нескольких сертификатов TLS в библиотеку запросов Python?
Может быть, мне следует использовать другую библиотеку илипереопределить часть его кода?