Requests SSL證書驗(yàn)證

2022-06-27 15:06 更新

Requests 可以為 HTTPS 請(qǐng)求驗(yàn)證 SSL 證書,就像 web 瀏覽器一樣。SSL 驗(yàn)證默認(rèn)是開啟的,如果證書驗(yàn)證失敗,Requests 會(huì)拋出 SSLError:

>>> requests.get('https://requestb.in')
requests.exceptions.SSLError: hostname 'requestb.in' doesn't match either of '*.herokuapp.com', 'herokuapp.com'

在該域名上我沒有設(shè)置 SSL,所以失敗了。但 Github 設(shè)置了 SSL:

>>> requests.get('https://github.com', verify=True)
<Response [200]>

你可以為 ?verify? 傳入 CA_BUNDLE 文件的路徑,或者包含可信任 CA 證書文件的文件夾路徑:

>>> requests.get('https://github.com', verify='/path/to/certfile')

或者將其保持在會(huì)話中:

s = requests.Session()
s.verify = '/path/to/certfile'

注解

如果 ?verify? 設(shè)為文件夾路徑,文件夾必須通過 OpenSSL 提供的 c_rehash 工具處理。

你還可以通過 ?REQUESTS_CA_BUNDLE? 環(huán)境變量定義可信任 CA 列表。

如果你將 ?verify? 設(shè)置為 False,Requests 也能忽略對(duì) SSL 證書的驗(yàn)證。

>>> requests.get('https://kennethreitz.org', verify=False)
<Response [200]>

默認(rèn)情況下, ?verify? 是設(shè)置為 True 的。選項(xiàng) ?verify? 僅應(yīng)用于主機(jī)證書。

# 對(duì)于私有證書,你也可以傳遞一個(gè) CA_BUNDLE 文件的路徑給 ?verify?。你也可以設(shè)置 # ?REQUEST_CA_BUNDLE? 環(huán)境變量。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)