Python 带有JSONRPC的烧瓶,带有不可验证证书的HTTPS服务器
下面的示例演示了如何使用Flask进行JSON RPC调用。我所有的东西都可以使用HTTP服务器,但我想使用HTTPS服务器。我还想使用非可信来源的证书/密钥,它们是我自己的。在代码的某些部分,我使用Python 带有JSONRPC的烧瓶,带有不可验证证书的HTTPS服务器,python,flask,Python,Flask,下面的示例演示了如何使用Flask进行JSON RPC调用。我所有的东西都可以使用HTTP服务器,但我想使用HTTPS服务器。我还想使用非可信来源的证书/密钥,它们是我自己的。在代码的某些部分,我使用请求,我可以设置verify=False,并且这些请求可以工作 但是我似乎找不到从flask_jsonrpc.proxy import ServiceProxy关闭验证的方法 客户端代码如下所示 from flask_jsonrpc.proxy import ServiceProxy proxy
请求
,我可以设置verify=False
,并且这些请求可以工作
但是我似乎找不到从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')
app.run(host="0.0.0.0", port=6600, debug=False, ssl_context=('cert.pem', 'key.pem'))
如果我使用HTTP(即将服务器更改为HTTP),上面的代码就可以正常工作。查看一些ServiceProxy
代码,我没有看到将verify=False
设置为任何内容的方法。。。或者有没有办法更改ServiceProxy
使用的标题
,以实现设置
我得到的错误是,
,这是我从请求中得到的,除非我设置验证=False
(我这样做,它们工作)
更多背景:
1) 在此设置中,客户端和服务器位于独立的网络上,而不是internet上。我认为使用HTTPS端点可以“免费”得到的是这些服务器/客户端之间的数据包加密。由于这些计算机不在互联网上,我不认为证书可以通过外部验证,和/或我不希望证书在一两年内过期
2) 在此设置中,Flask服务器用于“在生产中”运行客户端和服务器。我知道这是不推荐的
3) 烧瓶应用程序是这样启动的
from flask_jsonrpc.proxy import ServiceProxy
proxy = ServiceProxy('https://127.0.0.1:6600/api')
r = proxy.Test.ping(username='name', password='password')
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
HTTPS应该使用反向代理来实现,比如nginx
。浏览一下您链接的json_rpc文档,ServiceProxy
是一个用于测试的类,因此您应该使用它访问非https端点。另外,在请求上设置verify=False
,只会完全忽略证书,这更糟糕的是一个安全问题,充其量只是一个糟糕应用程序体系结构的指示器。如果没有更多关于SSL配置的信息,当然还有更多的代码,这个问题很难给出建议。谢谢。提供了更多的背景资料。通过查看ServiceProxy
代码,我没有看到verify
暴露出来,因此这似乎是一条死胡同。