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) 使用其他定制证书
4) 同时携带客户端证书,供服务器验证
2. urllib3软件包的SSL警告
1) urllib3提供了如下3种警告:
InsecureRequestWarning,HTTPS请求不支持证书验证
安装客户端证书,并设置必要的请求参数
InsecurePlatformWarning,只对于Python 2平台,使用过时的ssl模块。
使用pyOpenSSL解决该警告
SNIMissingWarning,只对于Python 2.7.9之前的平台,缺少SNI支持。
使用pyOpenSSL解决该警告
2) 禁用各种urllib3警告的方法
方法一:
方法二:
方法三:设置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
默认,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
相关文章推荐
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- 补充个python监控小函数,证书过期发送警告
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- python模块app登陆认证(M2Crypto数字证书加密)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python的urllib3软件包详解
- Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
- 【Python3.6爬虫学习记录】(六)urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
- WebSphere Application Server起用了全局安全性或者使用了插件SSL功能以后报证书过期的错误或者警告
- 【用Python写爬虫】获取html的方法【一】:使用urllib
- wcf采用证书认证。。CS篇 转载而来