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 может вызвать проблемы, если нет

Другие вопросы по тегам