Python запросов с https - проверка сертификата не удалась - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь установить sh соединение https между 2 приложениями: 1 - это API в nodejs, а другое - python клиентское приложение.

После прочтения о https и сертификатах я создали самозаверяющий сертификат. Для этого я использовал следующую команду:

openssl req -newkey rsa:2048 -nodes -keyout pvtkey.pem -x509 -days 365 -out domain.crt

И это, чтобы явно указать ключ publi c:

openssl rsa -in pvtkey.pem -pubout > pubkey.pem

Тогда в моем коде python у меня есть следующее строка для запроса:

response = requests.post(endpoint, cert=("home/pi/se24-title.crt", "/home/pi/pvtkey.pem"), headers=self.headers, json=req_payload)

Когда я запускаю тестирование своего кода, я получаю следующую ошибку:

Max retries exceeded with url: /api/title 
(Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

Ранее я также пытался установить crt в доверенные сертификаты и сделайте такие запросы:

response = requests.post(endpoint, verify=True, headers=self.headers, json=req_payload)

, но все равно получите тот же результат.

Что я делаю не так? Может ли это быть сертификат, который я сгенерировал?

1 Ответ

0 голосов
/ 16 апреля 2020

Так что мне удалось выяснить, как это сделать.

Каким-то образом я, должно быть, пропустил какой-то шаг на этом пути, но вот как я смог установить самоподписанный сертификат:

STEPS:

1. Create a self-signed certificate
    > openssl req -newkey rsa:2048 -nodes -keyout pvtkey.pem -x509 -days 365 -out domain.crt

2. Create the public key from the private key
    > openssl rsa -in pvtkey.pem -pubout > pubkey.pem


3. To install the certificate on raspbian:
sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp domain.crt /usr/local/share/ca-certificates/extra/domain.crt
sudo update-ca-certificates

Надеюсь, что это поможет другим людям с той же проблемой.

...