使用easywebdav时,如何验证自签名证书?

时间:2014-05-20 18:28:30

标签: python ssl webdav owncloud

我知道how to connect to my owncloud with python, by using easywebdav

我使用自签名证书和verify_ssl=False,但这使我容易受到中间人攻击,这是首先使用ssl的唯一原因。

我使用Fedora并尝试将我的服务器证书添加到$HOME/.pki/CA/cacert.pem,但它仍然失败。

1 个答案:

答案 0 :(得分:3)

您已在$HOME/.pki/CA/cacert.pem中拥有服务器证书。但是为了完成其他人,你可以获得这样的python证书:

import ssl
import os
# get the https certificate
cert = ssl.get_server_certificate(('example.com', 443))
# append it to my personal chain
pem_path = os.path.expanduser('~/.pki/CA/cacert.pem')
with open(pem_path, 'a+') as f:
    f.write(cert)

然后在easywebdav中使用它。 Easywebdav builds on requestsverify_ssl用作requests.Session.verify Requests docs say它接受布尔(True使用默认链)路径到CA_BUNDLE

所以这应该有效:

import easywebdav
pem_path = os.path.expanduser('~/.pki/CA/cacert.pem')
webdav = easywebdav.connect('example.com', username='user', password='pass', 
                            protocol='https', port=443,
                            verify_ssl=pem_path)
...