Python 中的证书存储库

问题描述 投票:0回答:3

我正在 python 中使用请求,并且我想使用 SSL。

>>> requests.get('https://github.com', verify=True)
<Response [200]>

文档说:

您可以使用可信 CA 的证书来验证 CA_BUNDLE 文件的路径。还可以通过 REQUESTS_CA_BUNDLE 环境变量指定此受信任 CA 列表。

有人知道如何配置此环境变量或信任证书吗?

谢谢!!

python ssl certificate python-requests
3个回答
2
投票

查看 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

0
投票

verify
设置为 True 应该已经使用 SSL:

http://docs.python-requests.org/en/latest/user/advanced/#ssl-cert-verification

或者,你有本地证书吗? (如果这是您想要的,请将

verify
设置为 cert.pem 文件的绝对路径。)


0
投票

这已经晚了 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)

无需添加验证。

不客气。

© www.soinside.com 2019 - 2024. All rights reserved.