Requests SSL證書驗證

2022-06-27 15:06 更新

Requests 可以為 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器一樣。SSL 驗證默認是開啟的,如果證書驗證失敗,Requests 會拋出 SSLError:

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

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

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

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

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

或者將其保持在會話中:

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

注解

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

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

如果你將 ?verify? 設置為 False,Requests 也能忽略對 SSL 證書的驗證。

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

默認情況下, ?verify? 是設置為 True 的。選項 ?verify? 僅應用于主機證書。

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號