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

SSL證書是什么?SSL驗證失效怎么辦?

更新時間:2023-09-28 來源:黑馬程序員 瀏覽量:

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

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

當使用Requests 調(diào)用請求函數(shù)發(fā)送請求時,由于請求函數(shù)的verify參數(shù)的默認值為True.所以每次請求網(wǎng)站默認都會進行SSL證書的驗證。不過,有些網(wǎng)站可能沒有購買SSL證書,或者SSL證書失效。程序訪問這類網(wǎng)站時會因為找不到SSL證書而拋出SSLError異常。例如,使用Requests請求國家數(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請求
response = requests.get (base_url, headers=header)
print (response.status_code)
運行代碼,程序拋出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)')))

這時需要主動關(guān)閉SSL驗證,即在調(diào)用getO函數(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

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

  import urllib3
  urllib3.disable warnings()

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




分享到:
在線咨詢 我要報名
和我們在線交談!