Аутентификация файла сертификата HTTP отлично работает с curl, с openssl, но не с «запросами» модуля Python.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Аутентификация файла сертификата HTTP отлично работает с curl, с openssl, но не с «запросами» модуля Python.

Сообщение Anonymous »

Я пытаюсь опубликовать сообщение через «запросы» в Python по URL-адресу, где проверка подлинности сертификата клиента является обязательной.
Сертификаты являются производственными (не самозаверяющими)
Скрипт прост:

Код: Выделить всё

import requests
print(requests.post('https://my_url.com', cert=('client.pem', 'key.pem'),data='foo', verify='ca.pem'))
Я получаю сообщение об ошибке:

Код: Выделить всё

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)
Конечно, когда я устанавливаю, всё работает нормально:

Код: Выделить всё

verify=False
С теми же сертификатами (и ключом) он отлично работает с Curl:

Код: Выделить всё

[ec2-user@ec2-instance ~]$ curl -w "%{http_code}\n" -s -o /dev/null -X POST https://my_url.com --cert client.pem --key key.pem --cacert ca.pem --data-binary "@some_file"
200
И при использовании openssl у меня не было ошибок:

Код: Выделить всё

[ec2-user@ec2-instance ~]$ openssl s_client -connect my_url.com:443 -cert client.pem -key key.pem -CAfile ca.pem
CONNECTED(00000003)
depth=2 C = FR, O = ******, CN = ******
verify return:1
depth=1 C = FR, O = ******, OU = ******, organizationIdentifier = ******, CN = ******
verify return:1
depth=0 C = FR, L = ******, O = ******, CN = ******
verify return:1
---
Certificate chain
0 s:C = FR, L = ******, O = ******, CN = ******
i:C = FR, O = ******, OU = ******, organizationIdentifier = ******, CN = ******
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Jun 12 22:00:00 2024 GMT; NotAfter: Jun 12 21:59:59 2025 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
...blah...
-----END CERTIFICATE-----
subject=C = FR, L = ******, O = ******, CN = ******
issuer=C = FR, O = ******, OU = ******, organizationIdentifier = ******, CN = ******
---
Acceptable client certificate CA names
...blah...
---
SSL handshake has read 3450 bytes and written 5346 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/790 ... sl-but-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • 200 ответов с помощью Curl, 403 с запросами Python
    Гость » » в форуме Python
    0 Ответы
    73 Просмотры
    Последнее сообщение Гость
  • В чем разница между запросами Python и cURL?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между запросами Python и cURL? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка cURL 60: см. http://curl.haxx.se/libcurl/c/libcurl-errors.html.
    Anonymous » » в форуме Php
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Проблема с несколькими параллельными запросами API Laravel через Curl на Nginx в Laragon
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»