服务器端源代码修改
都是修改的主py程序,例如 ftp.py
:
- 虚拟环境的pip要install模块
pyopenssl
--TLS_FTPHandler
需要这个库来支持 - 将导入的
FTPHandler
换成TLS_FTPHandler
# from pyftpdlib.handlers import FTPHandler
from pyftpdlib.handlers import TLS_FTPHandler
- 将handler的获取由
FTPHandler
换成TLS_FTPHandler
# handler = FTPHandler # ftp传输
handler = TLS_FTPHandler # ftps传输 = ftp + ssl
- 添加如下ssl相关代码,
my_key_cert.pem
就是openssl生成pyftpdlib启用ftps所需文件里做出来的pem
文件
# ssl加密
# 导入private key + certification的pem文件(上半截是私钥,下半截是证书)
handler.certfile = 'my_key_cert.pem'
# requires SSL for both control and data channel 启用ssl加密传输
# handler.tls_control_required = True # 控制连接启用ssl加密
# 我个人的感觉是,如果是开了这个控制连接加密,那么FTP刷新或者打开目录时经常要卡顿,卡的时间稳定在21秒左右,提示的是[正在协商密码],如果把这个控制连接加密关掉,速度就快多了.
handler.tls_data_required = True # 数据连接启用ssl加密
通过上述修改, 就在服务器端把ftp的传输改为ftps了
客户端设置(LeapFTP 3)
只需要在站点管理里, 把当前ftp服务器的协议由FTP
改为 FTP/SSL(明白)
或者 FTP 外部SSL(认证TLS)
即可