日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过FTP4J 实现 FTPS 连接

發布時間:2024/4/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过FTP4J 实现 FTPS 连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?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連接

Java代碼
  • 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();
  • }
  • }
  • }
  • 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連接

    Java代碼
  • 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();
  • }
  • }
  • }
  • 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

    ?

    請您到ITEYE網站看原創,謝謝!

    http://cuisuqiang.iteye.com/ !?

    轉載于:https://blog.51cto.com/ajiao13/1132563

    總結

    以上是生活随笔為你收集整理的通过FTP4J 实现 FTPS 连接的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。