您的位置:首页 > 编程语言 > Python开发

Python的urllib3软件包的证书认证及警告的禁用

2017-06-01 00:19 1546 查看
1. urllib3软件包的证书验证(Certificate verification)

默认,urllib3不进行HTTPS请求验证,即不认证服务器的证书。

要在HTTPS请求之前进行服务器验证,还需要在客户端安装根证书。

安装Python的certifi软件包就可以使用Mozilla的根证书。

1) certifi软件包的安装

pip install certifi



pip install urllib3[secure]

2) 通过certifi软件包使用Mozilla的证书
>>> import certifi
>>> import urllib3
>>> http = urllib3.PoolManager(
... cert_reqs='CERT_REQUIRED',
... ca_certs=certifi.where())

3) 使用其他定制证书
>>> import urllib3
>>> http = urllib3.PoolManager(
...     cert_reqs='CERT_REQUIRED',
...     ca_certs='/path/to/your/certificate_bundle')


4) 同时携带客户端证书,供服务器验证
>>> http = urllib3.PoolManager(
...     cert_file='/path/to/your/client_cert.pem',
...     cert_reqs='CERT_REQUIRED',
...     ca_certs='/path/to/your/certificate_bundle')


2. urllib3软件包的SSL警告
1) urllib3提供了如下3种警告:

InsecureRequestWarning,HTTPS请求不支持证书验证
安装客户端证书,并设置必要的请求参数
InsecurePlatformWarning,只对于Python 2平台,使用过时的ssl模块。
使用pyOpenSSL解决该警告
SNIMissingWarning,只对于Python 2.7.9之前的平台,缺少SNI支持。
使用pyOpenSSL解决该警告

2) 禁用各种urllib3警告的方法

方法一:
import urllib3
urllib3.disable_warnings()


方法二:
logging.captureWarnings(True)


方法三:设置PYTHONWARNINGS环境变量(Python 2.7开始支持)

默认不禁用警告,即PYTHONWARNINGS="default"

禁用所有警告,即PYTHONWARNINGS="ignore"

禁用Unverified HTTPS request警告,即PYTHONWARNINGS="ignore:Unverified HTTPS request"

方法四:设置python的-W选项

python -W ...

参考链接:
https://urllib3.readthedocs.io/en/latest/user-guide.html#certificate-verification http://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings https://docs.python.org/2/using/cmdline.html#cmdoption-W https://certifi.io/en/latest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息