FTPS:
一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。
FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
当使用FTPS与服务器连接时,有两种方法:显式和隐式。
简单来说:
显示又叫FTPES, FTPS客户端跟FTPS服务器必须显式使用一种同样的加密方法。如果客户端不要求加密,服务器也允许非加密通讯。
隐式 就是客户端直接通过TSL/SSL加密与服务器联系,如果服务器无响应,则停止通讯。
FTP4J 支持 FTPS/FTPES secured connection,其中使用FTPES还是原来的21端口,使用FTPS使用的是990端口,使用SFTP的是22端口,以下说的不包含SFTP内容。
可以查看Serv-U域详细信息查看服务邦定的端口,默认情况下是以下内容:
如果我们使用flashfxp进行连接,则使用不同连接方式时要进行选择,普通FTP连接使用21端口,不用选择:
我们通过21端口进行显示FTPS连接:
package test; import it.sauronsoftware.ftp4j.FTPClient; import java.security.SecureRandom; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; /** * 通过21端口进行显示FTPS连接 * @说明 * @author cuisuqiang * @version 1.0 * @since */ public class Ftp4jTest { public static void main(String[] args) { try { TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; SSLContext sslContext = null; sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManager, new SecureRandom()); SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); FTPClient client = new FTPClient(); client.setSSLSocketFactory(sslSocketFactory); client.setSecurity(FTPClient.SECURITY_FTPES); client.connect("192.168.1.122", 21); client.login("123", "123123"); System.out.println(client.toString()); System.out.println(client.currentDirectory()); } catch (Exception e) { e.printStackTrace(); } } }
代码会打印连接信息和当前目录
使用990端口进行隐式FTPS连接:
package test; import it.sauronsoftware.ftp4j.FTPClient; import java.security.SecureRandom; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; /** * 进行隐式FTPS连接 * @说明 * @author cuisuqiang * @version 1.0 * @since */ public class Ftp4jTest { public static void main(String[] args) { try { TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; SSLContext sslContext = null; sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManager, new SecureRandom()); SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); FTPClient client = new FTPClient(); client.setSSLSocketFactory(sslSocketFactory); client.setSecurity(FTPClient.SECURITY_FTPS); client.connect("192.168.1.122", 990); client.login("123", "123123"); System.out.println(client.toString()); System.out.println(client.currentDirectory()); } catch (Exception e) { e.printStackTrace(); } } }
打印内容相同
进行显示还是隐式连接的最大不同是指定了连接方式:
这个情况官方也给出了详细的说明:
The ftp4j library supports both FTPS (FTP over implicit TLS/SSL) and FTPES (FTP over explicit TLS/SSL).
The setSecurity() method can be used to turn on the feature:
client.setSecurity(FTPClient.SECURITY_FTPS); // enables FTPS
client.setSecurity(FTPClient.SECURITY_FTPES); // enables FTPES
Both methods must be called before connecting the remote server.
If the security is set to SECURITY_FTPS, the default port used by the connect() method changes to 990
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我试图得到一个本机FTP连接工作到一个奇怪的FTP服务器在红宝石。它需要TLS和隐式SSL。我有一个FileZilla客户端配置和工作。这是我的代码: 我得到以下运行时错误,当我运行上述: 使用Ruby和传统的net/ftp gem(与TLS/SSL问题相关的各种错误),我似乎无法从服务器中获得任何东西。DoubleBagFTPS似乎是最有前途的宝石,但我还是犯了一个错误。可能是我没有正确调用op
我正在用LWIP和mbedTLS堆栈在嵌入式系统中开发FTPS客户端。 现在,我要做的是: 使用DHCP获取IP地址 现在,我需要打开一个数据连接来读取我的文件。所以我想知道的是,数据连接的安全性是否与控制连接的安全性相同?这意味着我是否有要验证的证书?握手是一样的吗? 如果这还不清楚,让我知道我不是这方面的专家。 感谢您以后的回复
本文向大家介绍Java基于rest assured实现接口测试过程解析,包括了Java基于rest assured实现接口测试过程解析的使用技巧和注意事项,需要的朋友参考一下 背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assure
本文向大家介绍Pycharm连接gitlab实现过程图解,包括了Pycharm连接gitlab实现过程图解的使用技巧和注意事项,需要的朋友参考一下 一。从gitlab上clone代码到本地pycharm (一)。gitlab上找到创建项目的连接地址,分两种: 1. http连接方式: http://10.22.1.72/derekchen/cxg.git 2. ssh连接方式: git@10.22
本文向大家介绍基于Python实现签到脚本过程解析,包括了基于Python实现签到脚本过程解析的使用技巧和注意事项,需要的朋友参考一下 无聊刷日剧,看到签到断了好久,简单写了个脚本,通过模拟抓包的方式实现 1、先登录到字幕组网站获取token 2、用获取到的token登录到人人活动页面获取cookie 3、用获取到的cookie进行签到 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家
本文向大家介绍基于python爬取梨视频实现过程解析,包括了基于python爬取梨视频实现过程解析的使用技巧和注意事项,需要的朋友参考一下 目标网址:梨视频 然后我们找到科技这一页:https://www.pearvideo.com/category_8。其实你要哪一页都行,你喜欢就行。嘿嘿… 这是动态网站,所以咱们直奔network 然后去到XHR: 找规律,这个应该不难,我就直接贴网址上来咯,
本文向大家介绍Spring Security基于json登录实现过程详解,包括了Spring Security基于json登录实现过程详解的使用技巧和注意事项,需要的朋友参考一下 主要是重写attemptAuthentication方法 导入依赖 相关配置和代码 application.properties配置密码 spring.security.user.name=admin spring.se
本文向大家介绍基于vue+element实现全局loading过程详解,包括了基于vue+element实现全局loading过程详解的使用技巧和注意事项,需要的朋友参考一下 项目中使用的是vue+element实现的全局loading 1.引入所需组件,这里主要就是router和element组件,element组件引入可以参考element官网 2.下面就是重点及代码实现了 首先是全局的一个变