最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何基于FTP4J實(shí)現(xiàn)FTPS連接過程解析

 更新時(shí)間:2020年10月17日 11:53:43   作者:cuisuqiang  
這篇文章主要介紹了如何基于FTP4J實(shí)現(xiàn)FTPS連接過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

FTPS:

一種多傳輸協(xié)議,相當(dāng)于加密版的FTP。當(dāng)你在FTP服務(wù)器上收發(fā)文件的時(shí)候,你面臨兩個(gè)風(fēng)險(xiǎn)。第一個(gè)風(fēng)險(xiǎn)是在上載文件的時(shí)候?yàn)槲募用?。第二個(gè)風(fēng)險(xiǎn)是,這些文件在你等待接收方下載的時(shí)候?qū)⑼A粼贔TP服務(wù)器上,這時(shí)你如何保證這些文件的安全。你的第二個(gè)選擇(創(chuàng)建一個(gè)支持SSL的FTP服務(wù)器)能夠讓你的主機(jī)使用一個(gè)FTPS連接上載這些文件。這包括使用一個(gè)在FTP協(xié)議下面的SSL層加密控制和數(shù)據(jù)通道。一種替代FTPS的協(xié)議是安全文件傳輸協(xié)議(SFTP)。這個(gè)協(xié)議使用SSH文件傳輸協(xié)議加密從客戶機(jī)到服務(wù)器的FTP連接。

FTPS是在安全套接層使用標(biāo)準(zhǔn)的FTP協(xié)議和指令的一種增強(qiáng)型FTP協(xié)議,為FTP協(xié)議和數(shù)據(jù)通道增加了SSL安全功能。FTPS也稱作“FTP-SSL”和“FTP-over-SSL”。SSL是一個(gè)在客戶機(jī)和具有SSL功能的服務(wù)器之間的安全連接中對(duì)數(shù)據(jù)進(jìn)行加密和解密的協(xié)議。

當(dāng)使用FTPS與服務(wù)器連接時(shí),有兩種方法:顯式和隱式。

簡(jiǎn)單來(lái)說(shuō):

顯示又叫FTPES, FTPS客戶端跟FTPS服務(wù)器必須顯式使用一種同樣的加密方法。如果客戶端不要求加密,服務(wù)器也允許非加密通訊。

隱式 就是客戶端直接通過TSL/SSL加密與服務(wù)器聯(lián)系,如果服務(wù)器無(wú)響應(yīng),則停止通訊。

FTP4J 支持 FTPS/FTPES secured connection,其中使用FTPES還是原來(lái)的21端口,使用FTPS使用的是990端口,使用SFTP的是22端口,以下說(shuō)的不包含SFTP內(nèi)容。

可以查看Serv-U域詳細(xì)信息查看服務(wù)邦定的端口,默認(rèn)情況下是以下內(nèi)容:

如果我們使用flashfxp進(jìn)行連接,則使用不同連接方式時(shí)要進(jìn)行選擇,普通FTP連接使用21端口,不用選擇:

我們通過21端口進(jìn)行顯示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端口進(jìn)行顯示FTPS連接
 * @說(shuō)明 
 * @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();
		}
	}
}

代碼會(huì)打印連接信息和當(dāng)前目錄

使用990端口進(jìn)行隱式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;
/**
 * 進(jìn)行隱式FTPS連接
 * @說(shuō)明 
 * @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();
		}
	}
}

打印內(nèi)容相同

進(jìn)行顯示還是隱式連接的最大不同是指定了連接方式:

這個(gè)情況官方也給出了詳細(xì)的說(shuō)明:

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot命令行啟動(dòng)的方法詳解

    springboot命令行啟動(dòng)的方法詳解

    這篇文章主要介紹了springboot命令行啟動(dòng)的方法,本文通過兩種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java靜態(tài)內(nèi)部類實(shí)現(xiàn)單例過程

    Java靜態(tài)內(nèi)部類實(shí)現(xiàn)單例過程

    這篇文章主要介紹了Java靜態(tài)內(nèi)部類實(shí)現(xiàn)單例過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解SpringBoot整合RabbitMQ如何實(shí)現(xiàn)消息確認(rèn)

    詳解SpringBoot整合RabbitMQ如何實(shí)現(xiàn)消息確認(rèn)

    這篇文章主要介紹了SpringBoot整合RabbitMQ是如何實(shí)現(xiàn)消息確認(rèn)的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Java8中方便又實(shí)用的Map函數(shù)總結(jié)

    Java8中方便又實(shí)用的Map函數(shù)總結(jié)

    java8之后,常用的Map接口中添加了一些非常實(shí)用的函數(shù),可以大大簡(jiǎn)化一些特定場(chǎng)景的代碼編寫,提升代碼可讀性,快跟隨小編一起來(lái)看看吧
    2022-11-11
  • Java中File類中常用方法詳解

    Java中File類中常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了File類中常用方法的程序演示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java為什么使用BlockingQueue解決競(jìng)態(tài)條件問題面試精講

    java為什么使用BlockingQueue解決競(jìng)態(tài)條件問題面試精講

    這篇文章主要為大家介紹了java為什么使用BlockingQueue解決競(jìng)態(tài)條件問題面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Spring的Xml和JavaConfig 擴(kuò)展哪個(gè)好用

    Spring的Xml和JavaConfig 擴(kuò)展哪個(gè)好用

    今天給大家介紹基于注解的Spring擴(kuò)展,Spring的Xml和JavaConfig 擴(kuò)展的配置方法,關(guān)于Spring的Xml和JavaConfig 擴(kuò)展你會(huì)選哪個(gè)呢,帶著這個(gè)問題一起通過本文學(xué)習(xí)下吧
    2021-05-05
  • Java算法實(shí)現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解

    Java算法實(shí)現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解

    今天小編就為大家分享一篇關(guān)于Java算法實(shí)現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 將Maven鏡像源更改為阿里鏡像的操作步驟

    將Maven鏡像源更改為阿里鏡像的操作步驟

    在軟件開發(fā)中,Maven是一個(gè)流行的項(xiàng)目管理工具,它允許你從Maven中央倉(cāng)庫(kù)下載所需的依賴包,然而,由于地理位置或網(wǎng)絡(luò)狀況的差異,從默認(rèn)的Maven中央倉(cāng)庫(kù)下載依賴包的速度可能會(huì)較慢,所
    2025-01-01
  • 詳解Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí)

    詳解Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí)

    這篇文章主要為大家詳細(xì)介紹了Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

桑日县| 大余县| 大庆市| 韶山市| 门头沟区| 新化县| 浙江省| 陆良县| 高清| 霍邱县| 湘阴县| 织金县| 专栏| 绥中县| 南澳县| 青州市| 郁南县| 米易县| 安龙县| 九江市| 丰都县| 五指山市| 拉孜县| 长沙县| 沁阳市| 九江县| 大名县| 商都县| 察哈| 阿克| 商南县| 灵石县| 元江| 定南县| 永德县| 仙桃市| 松阳县| 克什克腾旗| 施秉县| 天峨县| 剑河县|