2013-03-15 56 views
0

這是我的代碼ftp4j:client.login返回無法識別的SSL消息,明文連接?

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("TLS"); 
    sslContext.init(null, trustManager, new SecureRandom()); 
    SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); 
    FTPClient client = new FTPClient(); 

    client.setSSLSocketFactory(sslSocketFactory); 
    client.setSecurity(FTPClient.SECURITY_FTPES); 

    client.connect("xxx.xxx.xxx", 21); 
    System.out.println("Connected (" + client.isConnected() + ") to host " + client.getHost() + ":" + client.getPort()); 
    client.login("xxxxx", "xxxxx");    
}catch (Exception e) { 
    e.printStackTrace(); 
} 

其上運行的回報

Connected (true) to host xxx.xxx.xxx:21 

,然後下破壞上client.login( 「XXXXX」, 「XXXXX」);有例外

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

任何想法爲什麼發生這種情況?

Java版本是1.4.2,ftp4j版本是1.7.2

回答

0

信息是明確的。您正在與純文本對等方進行SSL通話。該主機的端口21是否真的有FTPS服務器?

+0

是存在的,因爲我可以在端口21的總指揮官通過FTPS連接。 – lolotron 2013-03-16 00:48:29

0

請確保您使用正確的安全設置,例如 FTPClient.SECURITY_FTPSFTPClient.SECURITY_FTPES

FTPS(FTP在隱TLS/SSL)和FTPES(FTP通過明確的TLS/SSL)

相關問題