首頁(yè)技術(shù)文章正文

SSL證書是什么?SSL驗(yàn)證失效怎么辦?

更新時(shí)間:2023-09-28 來(lái)源:黑馬程序員 瀏覽量:

1695724505873_黑馬程序員好口碑IT教育.gif

大多數(shù)網(wǎng)站中都加人了SSL證書,以實(shí)現(xiàn)數(shù)據(jù)信息在瀏覽器和服務(wù)器之間的加密傳輸,保證雙方傳遞信息的安全性。SSL證書是一種數(shù)字證書,類似于駕駛證、護(hù)照和營(yíng)業(yè)執(zhí)照的電子副本,由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)CA在驗(yàn)證服務(wù)器身份后頒發(fā),具有服務(wù)器身份驗(yàn)證和數(shù)據(jù)傳輸加密功能。

當(dāng)使用Requests 調(diào)用請(qǐng)求函數(shù)發(fā)送請(qǐng)求時(shí),由于請(qǐng)求函數(shù)的verify參數(shù)的默認(rèn)值為True.所以每次請(qǐng)求網(wǎng)站默認(rèn)都會(huì)進(jìn)行SSL證書的驗(yàn)證。不過(guò),有些網(wǎng)站可能沒(méi)有購(gòu)買SSL證書,或者SSL證書失效。程序訪問(wèn)這類網(wǎng)站時(shí)會(huì)因?yàn)檎也坏絊SL證書而拋出SSLError異常。例如,使用Requests請(qǐng)求國(guó)家數(shù)據(jù)網(wǎng)站,具體代碼如下。

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')
# 發(fā)送GET請(qǐng)求
response = requests.get (base_url, headers=header)
print (response.status_code)
運(yùn)行代碼,程序拋出SSLError異常,具體內(nèi)容如下。
     ......
     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)')))

這時(shí)需要主動(dòng)關(guān)閉SSL驗(yàn)證,即在調(diào)用getO函數(shù)時(shí)將verify參數(shù)設(shè)置為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

這時(shí),如果不希望收到警告信息,則可以采用如下方式消除警告信息。

  import urllib3
  urllib3.disable warnings()

再次運(yùn)行程序,發(fā)現(xiàn)控制臺(tái)中不再輸出上面的警告信息。




分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!