SSLError("плохое рукопожатие") при попытке доступа к ресурсам пользовательских сертификатов и запросов
Я хочу запрограммировать веб-сервисы для обмена данными в Python с использованием Zeep. Я могу получить доступ к услугам только с моим сертификатом. У меня есть сертификат PFX, но я преобразовал его в два .pem
файлы.
Мой код:
from zeep import Client
from zeep.wsse.signature import Signature
import requests
from requests import Session
key_filename ='/.files/cert.key.pem'
cert_filename = './files/cert.crt.pem'
session = Session()
r = requests.get('https:...../PingWs?wsdl',
cert=(cert_filename, key_filename))
print (r)
Но я получаю
поднять SSLError(e, request=request) request.exceptions.SSLError: HTTPSConnectionPool(host='evidim-test.gov.si', port=443): превышено максимальное количество повторов с помощью url: /ws/test/PingWs?wsdl (вызвано по SSLError(SSLError("плохое рукопожатие: ошибка ([('подпрограммы SSL', 'tls_process_server_certificate', 'сбой проверки сертификата')],)",),))
2 ответа
Эту проблему вы должны будете решить путем внесения в белый список сертификата CA, используемого для подписи сертификата удаленного сервера, к которому вы пытаетесь подключиться, в настройках вашей системы. Но только для целей тестирования вы можете отключить проверку, используя:
r = requests.get('https:...../PingWs?wsdl',verify=False)
Не используйте это в производстве.
Надеюсь, поможет!
Эта ошибка почти наверняка означает, что удаленная конечная точка не подписана сертификатом в вашем локальном хранилище центра сертификации. У вас есть два варианта:
Установите сертификат в хранилище CA, которое использует запрос. По умолчанию это ваше локальное системное хранилище CA, по крайней мере так же, как это может быть определено запросами.
Настройте другой набор сертификатов для использования в объекте сеанса запросов.
В качестве примера:
import requests.sessions
photon_requests_session = requests.sessions.Session()
photon_requests_session.verify = "/etc/photon/cacerts.pem"
Затем мне нужно убедиться, что сертификат CA сервера находится в /etc/photon/cacerts.pem. Я использую это как:
r = photon_requests_session.get(url)
Проверьте правильность даты и времени. SSL может вызвать проблемы, если нет