Ошибка проверки сертификата Python в Windows - PullRequest
0 голосов
/ 07 июня 2018

Я использую запросы для подключения к REST API, и у меня есть пакет сертификатов, а также ключ .pem, который я использую для аутентификации, кто я с API.Сертификаты и код у меня работают на моей машине с Ubuntu, поэтому я знаю, что сертификаты хороши.

Я столкнулся с подобной проблемой некоторое время назад, когда настраивал ее в Linux, и возникало исключение, когда я помещал эти сертификаты в etc / pki / tls / certs.Когда я переместил эти сертификаты в etc / ssl / certs, все работало отлично.

Чтобы было ясно, я хэшировал каталог с этими сертификатами, хотя я, честно говоря, не уверен, какова важность хеширования.

Итак, мой вопрос: где я должен поместить эти сертификаты в Windows?

Вот фрагмент кода:

import requests

private_key = '\path\to\private\key.pem'
cert_bundle = '\path\to\bundle'
url = 'https://www.securedsite.com/api-entry'

session = requests.Session()
session.cert = private_key
session.verify = cert_bundle
try:
    resp = session.post(url)    
except:
    # Exception

Где у меня в настоящее время есть мои сертификаты в Windows:

'C: \ stuff \ admin \ private \ core_admin.pem'

'C: \ stuff \ admin \ certs \'

Программное обеспечениеверсии:

  • Windows 10
  • Python 3.6.3
  • запросы 2.18.4
  • openssl 1.0.2l

Для справки, машина linux:

  • Ubuntu 16.04.1 4.13.0-39-generic
  • Python 3.6.3
  • запросы 2.18.4
  • openssl 1.0.2l

В коде я использую pathlibs Path, чтобы построить путь, чтобы я мог переключаться между linux и windows, и все работаетна Linux.Я думаю, что мне просто нужно руководство о том, где разместить свои сертификаты.

1 Ответ

0 голосов
/ 25 апреля 2019

Находясь в Windows, вы обычно импортируете их в диспетчер сертификатов («Пуск», затем «Управление сертификатами компьютера» или «Управление сертификатами пользователя» в зависимости от области действия).Это поместило бы их в соответствующее место.Python использует это хранилище сертификатов.

Тем не менее, запросы по умолчанию используют свои собственные, но вы можете обойти это.См. Ошибка SSL в Windows с использованием запросов Python для получения подробной информации о том, как продолжить.

Осторожно, это глубокая кроличья нора.См. https://github.com/kennethreitz/requests/issues/2966 для дополнительной информации об этом.

...