作者:air12345 | 来源:互联网 | 2022-12-10 13:11
我正在使用访问RESTful API的请求。一切似乎都正常。我可以进行身份验证,拉回会话令牌,甚至可以对我为API编写的类中的方法进行单元测试。然后我尝试运行我的代码。
首先,这是我打的电话。标头是在init()中设置的与会话相关的静态项。主体是根据文件中的数据动态构建的,并传递给此函数。所有数据均有效。
respOnse= requests.post(url, headers=(Requestheader), data=json.dumps((Requestbody)))
当我运行代码时,它将使用我提供的元数据更新100多个记录。在项目150的某处,我得到以下信息:
ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1045)
我的第一步是打电话给供应商,以了解他们的所有Web服务器是否都已正确签署证书,以证明它们在负载均衡我时发现了配置错误的服务器。他们告诉我事实并非如此。
然后,我用Google搜索消息,发现有一个验证kwarg,因此我尝试:
respOnse= requests.post(url, headers=Requestheader, data=json.dumps(Requestbody), verify=False)
我知道这不是理想的长期方法,但是我想对其进行测试以查看行为是否相同。它做同样的事情。它运行了一段时间,并抛出了ssl错误。我认为verify = False的想法是不会检查。
供应商建议我检查正在使用的url,但这很好。我想如果有代理服务器或真正的中间人攻击引起问题,那么我在失败之前不会看到很多次成功。我以为这可能是会话超时,但是应该抛出401状态,并且我的活动水平对于非活动超时来说太高了。
我是python noob,不是安全专家。建议表示赞赏。
1> Ganesh Chowd..:
我在这里找到了
我找到了此解决方案,将此代码插入源文件的开头:
import ssl
try:
_create_unverified_https_cOntext= ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_cOntext= _create_unverified_https_context