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

来源:转载

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 urllib3urllib3.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


分享给朋友:
您可能感兴趣的文章:
随机阅读: