我正在 python 中使用请求,并且我想使用 SSL。
>>> requests.get('https://github.com', verify=True)
<Response [200]>
文档说:
您可以使用可信 CA 的证书来验证 CA_BUNDLE 文件的路径。还可以通过 REQUESTS_CA_BUNDLE 环境变量指定此受信任 CA 列表。
有人知道如何配置此环境变量或信任证书吗?
谢谢!!
查看 python 请求代码:
# Look for requests environment configuration and be compatible
# with cURL.
if verify is True or verify is None:
verify = (os.environ.get('REQUESTS_CA_BUNDLE') or
os.environ.get('CURL_CA_BUNDLE'))
因此您必须设置其中一个环境变量才能进行 SSL 调用。
设置环境变量REQUESTS_CA_BUNDLE:
$ export REQUESTS_CA_BUNDLE=/etc/ssl/certs/foo.crt
或将其设置为目录
$ export REQUESTS_CA_BUNDLE=/etc/ssl/certs
http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification
Note:
If verify is set to a path to a directory, the directory must have been
processed using the c_rehash utility supplied with OpenSSL.
所以你必须在目录中重新哈希这些证书:
$ cd /etc/ssl/certs
$ for i in *.crt; do ln -s $i $(openssl x509 -hash -noout -in $i).0; done
或
$ c_rehash /etc/ssl/certs
将
verify
设置为 True 应该已经使用 SSL:
http://docs.python-requests.org/en/latest/user/advanced/#ssl-cert-verification
或者,你有本地证书吗? (如果这是您想要的,请将
verify
设置为 cert.pem 文件的绝对路径。)
这已经晚了 9 年,但如果有人刚刚登陆这里,请尝试一下这个解决方案。
首先安装证书。
pip install --upgrade certifi
然后运行代码:
import os
import certifi
import requests
os.environ['REQUESTS_CA_BUNDLE'] = str(certifi.where())
url = "https://google.com"
response = requests.get(url)
print(response.status_code)
无需添加验证。
不客气。