Python爬虫的ssl证书问题完美解决

      在对接海康综合安防管理平台iSecure Center的OpenAPI过程中遇到了python ssl的ca证书问题,曾被蹂躏终被战胜,谨此记录。

一、python环境ssl问题     

抛出的错误:

  • requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

     原因:

     缺少python的相关安全包导致的,在python 2.7中添加一个新的特性,在urlopen请求的时候会验证ssl证书,如果是自签名的ssl证书会出错。而requests的底层是使用urlopen的,所以在requests发起https的post请求是必然会验证ssl证书。且网上说的req = requests.get(url,verify=False)在post请求和最新版本的python中都不适用。

    解决办法:

    安装最新版的requests、certifi。对于常规的ssl证书,安装完以后就没有问题,但是对于自签名认证的,即在header中带签名信息,服务器端也要进行签名比对签名串的,可能就抛出下面的错误了。

二、特定平台的ca证书问题     

抛出的错误:

  • requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

   原因:

python的cetifi中的证书文件中不包含当前网站证书,python的证书存放路径在cetifi下

证书中的内容如下:

解决办法:

在海康的平台中获取证书添加到此文件中。

在海康的安防综合管理平台的web登陆时需要下载安装个安全证书,安装后在安装目录中找到证书复制到此cacert.pem.

安装后的目录及文件

三、心得体会

在遇到问题时,分析原因,才能找到解决办法,比如海康ca的问题,就是类比认证签名过程进而联想到openapi跟web端的访问都是不同的客户端访问,所以证书应该一样,

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值