2017-07-31 24 views
0

目前我們正在使用一種將CA證書放入服務器以訪問第三方API的方法。Python將CA證書作爲字符串請求

certificate_path = os.path.join(CERT_PATH, 'cacert.pem') 
certificate_key_path = os.path.join(CERT_PATH, 'cacert.key') 
response = requests.get(url, cert=(certificate_path, certificate_key_path)) 

這工作,但我們正在尋找,而不是在Accounts表存儲在服務器上的CA證書,存儲在數據庫出於安全目的(由客戶提出安全原因)。

所以問題是:

  • 有什麼方法,我們可以直接通過CA證書的字符串到requests直接(比到一個臨時文件中寫入內容等)?

  • 是否有其他http python模塊支持在http get/post請求中傳遞CA cert的字符串?

  • 我們應該使用其他方法而不是將它們存儲在數據庫和服務器上嗎?

+0

閱讀有關_Lower-Lower-Level Classes_的'requests'或使用'io.BufferIO(...' – stovfl

+0

@ stovfl-感謝您的建議 –

回答

2

有一種方法通過臨時文件來做到這一點,就像這樣:

cert = tempfile.NamedTemporaryFile(delete=False) 
cert.write(CERTIFICATE_AS_STRING) 
cert.close() 
requests.get(url, cert=cert.name, verify=True) 
os.unlink(cert.name) 

如果你想知道這是爲什麼潛在不安全的,看看我的答案在這裏:https://stackoverflow.com/a/46570264/6445270