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

Python 使用easywebdav时,如何验证我的自签名证书?,python,ssl,webdav,owncloud,Python,Ssl,Webdav,Owncloud,我知道 我使用的是自签名证书和verify_ssl=False,但这使我容易受到中间人攻击,这是首先使用ssl的唯一原因 我正在使用Fedora并尝试将我的服务器证书添加到$HOME/.pki/CA/cacert.pem,但仍然失败。您已经在$HOME/.pki/CA/cacert.pem中拥有服务器证书。但是,为了让其他人完整,您可以使用python获得如下证书: import ssl import os # get the https certificate cert = ssl.get_s

我知道

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


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

您已经在
$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中使用它。而
verify_ssl
被用作
请求.Session.verify
它接受一个布尔值(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)
...