我正在尝试使用ftps下载文件。我在python中使用ftplib。问题是,在尝试建立连接时,我总是需要手动输入密钥的密码。我该如何实现自动化?
这个curl命令工作正常
curl -k -la --ftp-method nocwd --ftp-ssl -u test_user:test_password --key my_key.key --cert my_cert.crt:cert_password ftp.mysite.com
但是当我尝试使用python时,我必须手动输入“cert_password”
import ftplib
conn = ftplib.FTP_TLS(host='ftp.mysite.come', user='test_user', passwd='test_password', keyfile='my_key.key', certfile='my_cert.crt')
答案 0 :(得分:0)
我没有使用 ftplib ,但根据[Python]: class ftplib.FTP_TLS(host='', user='', passwd='', acct='', keyfile=None, certfile=None, context=None, timeout=None, source_address=None):
密钥文件和 certfile 是 context 的传统替代方案 - 它们可以分别指向PEM格式的私钥和证书链文件用于SSL连接。
查看[Python]: SSL Contexts,您应该分两步进行连接:
import ssl
import ftplib
ctx = ssl.SSLContext()
ctx.load_cert_chain("my_cert.crt", keyfile="my_key.key", password="cert_password")
conn = ftplib.FTP_TLS(host="ftp.mysite.come", user="test_user", passwd="test_password", context=ctx)