首页技术文章正文

SSL证书是什么?SSL验证失效怎么办?

更新时间:2023-09-28 来源:黑马程序员 浏览量:

1695724505873_黑马程序员好口碑IT教育.gif

大多数网站中都加人了SSL证书,以实现数据信息在浏览器和服务器之间的加密传输,保证双方传递信息的安全性。SSL证书是一种数字证书,类似于驾驶证、护照和营业执照的电子副本,由受信任的数字证书颁发机构CA在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

当使用Requests 调用请求函数发送请求时,由于请求函数的verify参数的默认值为True.所以每次请求网站默认都会进行SSL证书的验证。不过,有些网站可能没有购买SSL证书,或者SSL证书失效。程序访问这类网站时会因为找不到SSL证书而抛出SSLError异常。例如,使用Requests请求国家数据网站,具体代码如下。

import requests
base url = 'https://data.stats.gov.cn/'
header = { 'User-Agent': 'Mozilla/5.0 (Nindows NT 6.1; Win64; x64'
                         'AppleWebKit/537.36 (KHTML, like Gecko)'
                         'Chrome/90.0.4430.212 Safar1/537.36')
# 发送GET请求
response = requests.get (base_url, headers=header)
print (response.status_code)
运行代码,程序抛出SSLError异常,具体内容如下。
     ......
     requests.exceptions.SSLError: HTTPSConnectionPool (host='data.stats.gov.cn', port=
443): Max retries exceeded with url: / (Caused by SSLError(SSLCert Verification Error(1,
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in
certificate chain (_ssl.c:1108)')))

这时需要主动关闭SSL验证,即在调用getO函数时将verify参数设置为False,代码如下。

  C:\Users\admin\AppData\Roaming\Python\Python38\site-packages\ur11ib3\
  connectionpool.py:981: InsecureRequestNarning: Unverified HTTPS request
  is being made to host 'data.stata.gov.cn'. Adding certificate verification is
strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.
htmltssl-warnings

这时,如果不希望收到警告信息,则可以采用如下方式消除警告信息。

  import urllib3
  urllib3.disable warnings()

再次运行程序,发现控制台中不再输出上面的警告信息。




分享到:
在线咨询 我要报名
和我们在线交谈!