解决python打开https出现certificate verify failed的问题


Posted in Python onSeptember 03, 2020

今天遇到一个奇怪的问题,在用urllib打开一个https链接的时候,出现了一下报错信息:IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727),报错问题就是证书验证失败,这种情况出现在网站使用的是自签名证书或系统根证书存在问题的时候。

原因:

Python 从 2.7.9版本开始,就默认开启了服务器证书验证功能,如果证书校验不通过,则拒绝后续操作;这样可以防止中间人攻击,并使客户端确保服务器确实是它声称的身份。如果是自签名证书,由于一般系统的CA证书中不存在在自签名的CA证书内容,从而导致证书验证不通过。

临时解决方案

方案1:通过环境部变量设置,关闭服务器证书验证功能

执行以下shell命令(假设你使用的是bash shell):

echo "export PYTHONHTTPSVERIFY=0" >> ~/.bashrc

source ~/.bashrc

方案2:取消服务器证书验证功能(全局影响)

在文件开始部分,加入如下代码:

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

方案3:创建取消服务器证书验证的context参数(当前请求代码影响)

使用示例如下:

import ssl
context = ssl._create_unverified_context()
urllib.urlopen('https://www.baidu.com', context=context)

方案4:requests verify 参数设置为False,取消验证功能

使用示例如下:

requests.get(url, verify=False)

方案5:手动指定CA证书(Python3)

使用示例如下:

import urllib

urllib.request.urlopen("https://example.com/some/info", cafile="ca.pem")

当系统根证书存在问题的时候,可以使用 certifi提供的CA证书:

import certifi
import urllib
urllib.request.urlopen('https://example.com/bar/baz.html', cafile=certifi.where())

补充知识:Python3之关闭SSL证书验证

报错信息:

Traceback (most recent call last):
File "D:\Python36\lib\site-packages\urllib3\contrib\pyopenssl.py", line 441, in wrap_socket
cnx.do_handshake()
File "D:\Python36\lib\site-packages\OpenSSL\SSL.py", line 1806, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "D:\Python36\lib\site-packages\OpenSSL\SSL.py", line 1546, in _raise_ssl_error
_raise_current_error()
File "D:\Python36\lib\site-packages\OpenSSL\_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]

During handling of the above exception, another exception occurred:

https://aweme.snssdk.com/aweme/v1/play/?video_id=v0200f180000bc4e71kd1dr48pievrrg&line=0&app_id=24

因为网址使用了https,所以经过代理时会报错;

解决方案:

#参数:verify=False
html = requests.get(item_url, headers=headers, verify=False)
# print(html.content)

以上这篇解决python打开https出现certificate verify failed的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的守护进程(Daemon)用法实例
Jun 02 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
python让函数不返回结果的方法
Jun 22 Python
基于Python实现粒子滤波效果
Dec 01 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
Python自动化测试PO模型封装过程详解
Jun 22 Python
python实现商品进销存管理系统
May 30 Python
详解torch.Tensor的4种乘法
Sep 03 #Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 #Python
python开发入门——列表生成式
Sep 03 #Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 #Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 #Python
Python开发入门——迭代的基本使用
Sep 03 #Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 #Python
You might like
php下将XML转换为数组
2010/01/01 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
node通过npm写一个cli命令行工具
2017/10/12 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
python使用mysql数据库示例代码
2017/05/21 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
银行学习十八大感想
2014/01/11 职场文书
暑期社会实践感言
2014/02/25 职场文书
请假条格式范文
2014/04/10 职场文书
优秀员工评优方案
2014/06/13 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
2014年团支部工作总结
2014/11/17 职场文书
绿里奇迹观后感
2015/06/15 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS