Я следую примеру здесь , показывающему, как выполнять вызовы JSON RPC с Flask. И у меня все работает с HTTP-сервером, но я хочу использовать HTTPS-сервер. Я также хочу использовать сертификат / ключ, которые не из надежного источника, они мои собственные. В некоторых частях кода я использую requests
, и я могу установить verify=False
, и эти запросы работают.
Но я не могу найти способ отключить проверку с помощью from flask_jsonrpc.proxy import ServiceProxy
.
Код клиента выглядит следующим образом:
from flask_jsonrpc.proxy import ServiceProxy
proxy = ServiceProxy('https://127.0.0.1:6600/api')
r = proxy.Test.ping(username='name', password='password')
Точный код, приведенный выше, работает, если я использую HTTP (т.е. меняю сервер на HTTP). Просматривая код ServiceProxy
, я не видел способа установить verify=False
для чего-либо ... Или, может быть, есть способ изменить headers
, используемый ServiceProxy
для достижения настройки?
Ошибка, которую я получаю, <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
, это то, что я получаю от requests
, если я не установлю verify=False
(что я делаю, и они работают).
Дополнительная информация:
1) В этой настройке клиенты и серверы находятся в изолированной сети, а не в Интернете. Я подумал, что могу получить «бесплатно» с использованием конечных точек HTTPS, это шифрование пакетов между этими серверами / клиентами. Поскольку этих компьютеров нет в Интернете, я не думал, что сертификаты могут быть проверены извне, и / или я не хотел, чтобы срок действия сертификатов истек через год или два.
2) В этой настройкеFlask server используется для запуска клиента и серверов "в производстве". Я знаю, что это не рекомендуется.
3) Приложение Flask запускается следующим образом,
app.run(host="0.0.0.0", port=6600, debug=False, ssl_context=('cert.pem', 'key.pem'))
4) Сертификаты создаются из,
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365