使用python请求,如何在不使用CA根包的情况下直接为特定服务器固定自签名的.pem证书?在
目前有可能吗?如果是,你能提供一个例子吗?在
我读了http://docs.python-requests.org/en/latest/user/advanced/#ssl-cert-verification,但不确定这是否适用于我要做的事情:
“您还可以指定一个本地证书作为客户端证书,作为单个文件(包含私钥和证书)或作为两个文件路径的元组使用:请求.get('https://kennethreitz.com',证书=('/path)/服务器.crt“,'/path/key'))响应[200]”
您还可以根据证书的指纹验证证书。 为此,您需要一个用于请求的自定义传输适配器。 一个简单的例子可以在这里找到:
https://github.com/untitaker/vdirsyncer/blob/9d3a9611b2db2e92f933df30dd98c341a50c6211/vdirsyncer/utils/init.py#L198
因为证书文件是自签名的,所以它的工作方式与处理请求时的正常情况相同。以下是一个循序渐进的过程:
获取自签名证书,最好是以某种安全的带外方式。例如,我运行一个通过自签名证书提供HTTPS访问的web服务器,因此我使用
scp
下载了证书:因为我用的是nginx,它已经是PEM格式了,但是如果不是的话,你需要转换它。这超出了这个答案的范围。
使用来自内部请求的证书文件:
这就是你要做的。在
如果无法以信任的带外方式获取证书,则可以使用浏览器获取证书。所有浏览器都允许您通过其ui导出证书。这不太安全:如果有人要向您提交MITM,那么他们很可能已经开始了,并且可以向您提供他们的MITM根CA,而不是您的自签名证书
相关问题 更多 >
编程相关推荐