Проблема с преобразованием curl в python с помощью сертификата и ключа - PullRequest
0 голосов
/ 05 февраля 2020

я пытаюсь преобразовать этот локон в python:

curl --cert cert.pem --key key.pem https://....

мой python код выглядит так:

import requests
response = requests.get('https://...',cert=('cert.pem', 'key.pem')

не имеет значения, если я установил * От 1007 * до True или False. Команда curl работает, но код python возвращает сообщение об отказе в доступе и Response [403]. Кто-нибудь может мне помочь, спасибо

cert.pem - это сертификат, а ключ - закрытый ключ rsa.

Может быть, есть способ сделать это с помощью pycurl вместо запросов?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Похоже, что есть проблема с библиотекой requests и вместо нее используются библиотеки http.client и ssl.

import http.client
import ssl
certificate_file = 'cert.pem'
certificate_secret = '.key.pem'
host = 'url.com'

request_url = '/api/call..'

context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_cert_chain(certfile=certificate_file, keyfile=certificate_secret)

connection = http.client.HTTPSConnection(host, port=443, context=context)

connection.request(method="GET", url=request_url)

response = connection.getresponse()
print(response.status, response.reason)
data = response.read()
print(data)
0 голосов
/ 06 февраля 2020

Вам не нужен файл ключа, так как он должен быть уже встроен в файл .pem.

Просто выполните r = requests.get('https://...', verify='cert.pem')

...