解决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 相关文章推荐
python2.7安装图文教程
Mar 13 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
python实现定时发送qq消息
Jan 18 Python
Python设计模式之代理模式实例详解
Jan 19 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
pytorch 修改预训练model实例
Jan 18 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
python支持多继承吗
Jun 19 Python
python3跳出一个循环的实例操作
Aug 18 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
python 远程执行命令的详细代码
Feb 15 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中json_encode中文编码问题分析
2011/09/13 PHP
php使用codebase生成随机数
2014/03/25 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
js图片处理示例代码
2014/05/12 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
python 实现屏幕录制示例
2019/12/23 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
室内设计专业学生的自我评价分享
2013/11/27 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
写字楼租赁意向书
2014/07/30 职场文书
党委班子剖析材料
2014/08/21 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL