简介:正常FTP被动模式,在开始数据连接前,控制连接会发送明文的数据连接ip和要开启的端口,。FTPS在交互前有AUTH指令,认证后报文加密,会用到证书加密,因此认证后发送的报文都是加密的。重点来了,用户的实际应用FTPS传输,但是控制连接会发送的数据连接ip和要开启的端口不是加密的是明文的。用filezilla server搭建的FTPS server传输的都是加密的无法控制哪一部分是明文的,但是 Windows server 2008可以实现这个功能。
这里就简单介绍使用Windows server 2008搭建FTPS server。
参考链接:https://docs.microsoft.com/en-us/iis/publish/using-the-ftp-service/using-ftp-over-ssl-in-iis-7
参考链接是微软的原文搭建教程,这里先简单做一个中文的介绍。
- 安装Web服务器(IIS)
参考https://blog.csdn.net/qq_28189423/article/details/82221018 - 新建FTP根文件,并修改权限
修改权限在cmd中输入ICACLS “%SystemDrive%\inetpub\ftproot” /Grant administrators:F /T
- 生成服务器证书
创建自签名证书
- 创建FTP站点
物理路径选择之前新建FTP根文件
ip地址选择全部未分配,意思是网卡上的ip都可以被访问,也可以固定ip为网卡ip地址,
SSL选择允许,SSL证书选择刚刚新建的服务器证书。
允许访问可以选择所有用户,也可以根据本地配置的用户和组进行选择。
选择完成就可以了。 - FTP SSL 设置
选择自定义
- 验证
打开IE浏览器输入ftp://localhost/
看配置是否生效
用网卡同网段或者路由可达的PC打开
比如filezilla client,跳出证书,即安装成功。
- ftp服务访问失败,解决方法
确保防火墙入站规则和出站规则,ftp服务都被放通
手动添加 C:\Windows\System32\svchost.exe
打开控制面板,添加svhost.exe
勾选Windows服务主进程
再尝试连接FTP应该可以访问了。
实现前部分加密,传输数据连接的ip和端口明文,可以使用python 中的ftplib 模块。
ccc()这个函数可以实现。