在supervisord下运行python时证书验证失败
我有一个程序在我的user/virtualenv中成功运行。程序使用在supervisord下运行python时证书验证失败,python,ssl,python-requests,ssl-certificate,supervisord,Python,Ssl,Python Requests,Ssl Certificate,Supervisord,我有一个程序在我的user/virtualenv中成功运行。程序使用请求访问API。在本文中,整个程序可以理解为: requests.get("https://example.com") 当我从命令行调用它时,它工作得非常好。然而,我正试图让它在supervisord下运行,无论出于何种原因,当我以这种方式运行时,它会出现如下SSL错误: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certifica
请求访问API。在本文中,整个程序可以理解为:
requests.get("https://example.com")
当我从命令行调用它时,它工作得非常好。然而,我正试图让它在supervisord
下运行,无论出于何种原因,当我以这种方式运行时,它会出现如下SSL错误:
SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)")
它使用的是同一个用户、python环境、目录等。你知道还有什么需要检查/还有什么可能导致这种情况吗
编辑:我认为这可能是防火墙规则类型的事情。探索该选项。在SupervisorOrd环境中是否提供SSL证书?我假设您使用requests.certs,那么证书也在预期的requests.certs.where()
?位置,所以这是一个网络代理。我运行的机器使用squid代理,我必须添加以下行,以便在我的supervisor配置中设置正确的环境变量,使其正常工作:
environment=http_proxy=http://proxy.server:3128/,https_proxy=http://proxy.server:3128/
您是否尝试将verify=False
添加到您的请求中:requests.get(“https://example.com“,verify=False)
?是的,如果我添加verify=False
我会得到一个不同的错误(奇怪的是,服务器返回了502
,尽管它在正常运行时总是返回200
。此外,我不想添加verify=False
作为长期解决方案,即使它确实有效,因为我确实想验证证书。你是否尝试按照建议降级请求
?我没有这样做,但我认为这是一种失误。)这就是为什么在主管的领导下运行时会有不同的行为?因此,任何涉及绕过请求的解决方法似乎都无法解决问题的根本原因。