Невозможно загрузить ssl-сертификат в python: TypeError: certfile должен быть допустимым путем к файловой системе - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь отправить запрос POST, используя клиентские сертификаты (которые являются самозаверяющими) в Python3. Приложение работает на Docker (хотя это не должно иметь никакого значения).

Когда я пытаюсь загрузить файлы сертификата и ключа в контексте, я получаю сообщение об ошибке ниже. Я проверил, что сертификаты существуют в пути / приложении в файловой системе. Что здесь не так?

Ошибка типа: certfile должен быть допустимым путем к файловой системе

Вот мой код:

import ssl

context = ssl._create_unverified_context()
context.load_cert_chain("/app/attendance.pem", "/app/key.pem")

conn = http.client.HTTPSConnection("someHost", 8200, context) # The error is thrown on this line

1 Ответ

0 голосов
/ 29 марта 2020
conn = http.client.HTTPSConnection("someHost", 8200, context) # The error is thrown on this line

С документация HTTPSConnection :

class http.client.HTTPSConnection(host, 
   port=None, 
   key_file=None, 
   cert_file=None, 
   [timeout, ]
   source_address=None, *, 
   context=None, 
   ...

На основании этого третий параметр равен key_file. Это означает, что ваш context будет интерпретирован как ключ. Это вызывает сообщение об ошибке, которое вы видите, так как контекст не является допустимым путем. Вместо использования (неправильного) позиционного параметра для context следует использовать (правильный) именованный параметр:

conn = http.client.HTTPSConnection("someHost", 8200, context = context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...