zoukankan      html  css  js  c++  java
  • Python接口自动化--SSL 3

    官方文档参考地址:

    https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

    针对SSL Warnings,urllib3根据不同级别的证书校验有不同级别的警告,针对这些不同的场景有以下几种不同的解决办法

    1.不安全的请求警告

      当在没有启用证书验证的情况下对HTTPS URL进行请求时,就会发生这种情况。解决办法如下:

      参考官方地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl

      urllib3没有对HTPPS请求做校验,为了启用证书验证,需要安装一组root证书,最简单也最现实的实现方法是用certifi包,包含Mozilla的root证书包

      安装方式:1)、pip install certifi  或者 2)、pip install urllib3[secure]

      安装好后,当发送请求时,可以通过创建PoolManager进行证书验证

    # _*_ encoding:utf-8 _*_
    
    import requests
    import urllib3
    import certifi
    
    http = urllib3.PoolManager(
        cert_reqs = 'CERT_REQUIRED',
        ca_certs = certifi.where()
    )
    #无异常
    http.request('GET','https://www.baidu.com/')
    
    #有异常
    http.request('GET','https://expired.badssl.com')
    #urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='expired.badssl.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)'),))
    
    #报错如下
    r = requests.get('https://www.baidu.com/')
    #requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1,
    u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)'),))

    2、不安全的平台警告

      这种情况发生在具有过时ssl模块的Python 2平台上。这些旧的ssl模块可能会导致一些不安全的请求,从而在它们失败的地方获得成功,并在它们应该成功的地方请求失败。遵循pyOpenSSL指南来解决这个警告。

      官方文档参考地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2

      pyOpenSSL官方地址:https://pyopenssl.readthedocs.io/en/latest/

    3、SNIMissingWarning

      这发生在Python 2版本上,比2.7.9大。这些老版本缺少SNI的支持。这可能导致服务器显示客户认为无效的证书。遵循pyOpenSSL指南来解决这个警告。

    注:如果在确认该HTTPS请求是安全的,可以访问时,可以通过以下方法取消警告

    import urllib3
    urllib3.disable_warnings()
    #同时可以通过以下方式抓取日志
    logging.captureWarnings(True)

     

  • 相关阅读:
    黑马乐优商城项目总结
    SpringDataJpa学习(3)——SpringDataJpa的多表映射和动态查询
    SpringDataJpa学习(2)——SpringDataJpa的单表使用
    SpringDataJpa学习(1)——Jpa学习
    个人博客06
    个人博客05
    个人博客04
    典型用户和用户场景描述
    个人博客03
    个人博客02
  • 原文地址:https://www.cnblogs.com/cindy-cindy/p/8321426.html
Copyright © 2011-2022 走看看