Python请求:从数据库加载SSL证书

时间:2016-04-01 09:47:54

标签: python ssl python-requests

我正在使用requests来使用https协议中的Web服务。我曾经通过将verify设置为证书的文件路径来验证服务器证书。

但是现在我想将服务器证书存储到数据库中。在运行时,证书将作为字符串加载到内存中。

问题是是否可以将服务器证书作为字符串传递给requests

还有一个想法:是否可以将verify指向云存储中的证书文件,例如Amazon S3,Google存储等?

1 个答案:

答案 0 :(得分:2)

据我所知,不,verify应该是布尔值,或证书文件的路径,或者是包含证书的目录的路径。没有简单的方法来规避这一点。

您可以从数据库中检索证书,将其写入临时文件,然后将临时文件的路径传递给requests

from tempfile import NamedTemporaryFile

with NamedTemporaryFile() as f:
    f.write(get_cert_from_db())
    f.flush()    # ensure all data written
    r = requests.get(url, verify=f.name)

一旦退出上下文管理器(使用with创建)的范围,临时文件将自动关闭并删除。该文件确实存在于磁盘上,直到它关闭,因此可以被其他进程查看,因此您需要考虑该证书是否可以接受。