我有一个脚本,它使用请求来调用API端点,但是在我所在的位置,所有通信都需要使用自签名证书(MITM)。你知道吗
我从.bash_profile
中适当地加载环境变量:
.bash\u profile包含以下行:
export REQUESTS_CA_BUNDLE='/exact/location/of/certs/myrootca.pem'
然后激活virtualenvironment并运行. ~/.bash_profile
,加载环境变量。你知道吗
但是,在本地运行此脚本时,失败并显示以下消息:
Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))
出错的部分,如下所示:
BASE_URL = (
"https://theapiendpoint.org/the/endpoint/user?limit=10"
)
key = os.environ.get("OAUTH_KEY")
secret = os.environ.get("OAUTH_SECRET")
auth = OAuth1(key, secret)
url = BASE_URL
# THIS IS THE LINE THAT ERRORS
r = requests.get(url, auth=auth)
在生产服务器上,这可以正常工作,因为它为REQUESTS_CA_BUNDLE
中列出的自签名证书选择环境变量,并且不会抛出错误。你知道吗
如果我运行python -c "import requests; print(requests.certs.where())"
,它会显示cacert.pem
的以下位置:
/my/repo/venv/lib/python3.7/site-packages/certifi/cacert.pem
我尝试过将我的自签名信息添加到.pem
中,但也没有成功。你知道吗
有没有想过我还可以尝试什么,这样这个脚本就可以在我拥有的任何环境中运行,而不必在生产和本地开发之间进行代码更改?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐