«Сертификат или список сертификатов не найден» при предоставлении файла PEM, созданного из строкиPython

Программы на Python
Ответить
Anonymous
 «Сертификат или список сертификатов не найден» при предоставлении файла PEM, созданного из строки

Сообщение Anonymous »

Я использую заведомо действительный сертификат PEM для вызова HTTP-прокси с помощью запросов Python, но поскольку я нахожусь в среде бессерверных функций, я хочу создать файл PEM в памяти с помощью переменной среды (хранящейся в виде строки), а не файла, хранящегося в контейнере. Для этого у меня есть следующий код для воссоздания содержимого файла PEM:

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

pem_string = os.environ['PEM_STRING']
pem_string = pem_string.replace(' ', '\n')
pem_string = f'-----BEGIN CERTIFICATE-----\n{pem_string}\n-----END CERTIFICATE-----\n'
Где pem_string — это закодированная часть содержимого файла PEM, за исключением случая, когда он хранится в виде переменной env, он теряет все символы новой строки, поэтому мне нужно ввести их обратно, используя приведенный выше пример.
Далее я записываю это во временный файл, а затем передаю временный файл запросам Python с помощью параметра «verify», чтобы, надеюсь, сертификат заработал:

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

with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.pem') as cert_file:
cert_file.write(pem_string)
with requests.get(url, stream=True, verify=cert_file.name, proxies=proxies) as req:
# Handle the request
К сожалению, это приводит к ошибке.

SSLError("невозможно загрузить доверенные сертификаты: ошибка([('x509
подпрограммы сертификации', '', 'сертификат или список имен не найден')])")

Может ли кто-нибудь помочь мне понять, делаю ли я здесь что-то неправильно?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... rom-string
Ответить

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

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

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

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

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