2012-06-15 3 views
0

안드로이드 :IOException이 : SSL 컨텍스트를 초기화 할 수 없습니다 - 아파치 코 몬즈 넷 - 나는 아파치 FTPSClient를 사용하여 FTP에 연결을 시도하고 있지만이 오류가 계속

9월 6일에서 15일까지 : 15 : 14.749을 : W를/System.err (29451) : java.io.IOException : SSL 컨텍스트를 초기화 할 수 없습니다.

이 오류는 다음 코드와 함께 발생하며 두 번째 줄 (연결)에 나타납니다.

ftpsClient = new FTPSClient("SSL"); 
ftpsClient.connect(host); 
int reply = ftpsClient.getReplyCode(); 
if(!FTPReply.isPositiveCompletion(reply)) { 
    ftpsClient.disconnect(); 
} 
ftpsClient.login(user, password + nl); 
ftpsClient.setFileType(FTP.BINARY_FILE_TYPE); 
ftpsClient.enterLocalPassiveMode(); 

내가 잘못하고있는 것에 대한 제안이 있으십니까?

편집 :

전체 스택 트레이스

06-15 09:15:14.749: W/System.err(29451): java.io.IOException: Could not initialize SSL context 
06-15 09:15:14.749: W/System.err(29451): at org.apache.commons.net.ftp.FTPSClient.initSslContext(FTPSClient.java:228) 
06-15 09:15:14.749: W/System.err(29451): at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:246) 
06-15 09:15:14.749: W/System.err(29451): at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:197) 
06-15 09:15:14.757: W/System.err(29451): at org.apache.commons.net.SocketClient.connect(SocketClient.java:164) 
06-15 09:15:14.757: W/System.err(29451): at org.apache.commons.net.SocketClient.connect(SocketClient.java:184) 
06-15 09:15:14.757: W/System.err(29451): at org.apache.commons.net.SocketClient.connect(SocketClient.java:273) 
06-15 09:15:14.757: W/System.err(29451): at com.test.FTPClient$getFileListTask.doWhat(FTPClient.java:546) 
06-15 09:15:14.757: W/System.err(29451): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:201) 
06-15 09:15:14.757: W/System.err(29451): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:1) 
06-15 09:15:14.757: W/System.err(29451): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
06-15 09:15:14.757: W/System.err(29451): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-15 09:15:14.765: W/System.err(29451): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-15 09:15:14.765: W/System.err(29451): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
06-15 09:15:14.765: W/System.err(29451): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
06-15 09:15:14.765: W/System.err(29451): at java.lang.Thread.run(Thread.java:856) 
06-15 09:15:14.765: W/System.err(29451): Caused by: java.security.KeyManagementException: No X509KeyManager found 
06-15 09:15:14.765: W/System.err(29451): at org.apache.harmony.xnet.provider.jsse.SSLParametersImpl.<init>(SSLParametersImpl.java:116) 
06-15 09:15:14.765: W/System.err(29451): at org.apache.harmony.xnet.provider.jsse.SSLContextImpl.engineInit(SSLContextImpl.java:92) 
06-15 09:15:14.765: W/System.err(29451): at javax.net.ssl.SSLContext.init(SSLContext.java:219) 
06-15 09:15:14.765: W/System.err(29451): at org.apache.commons.net.ftp.FTPSClient.initSslContext(FTPSClient.java:226) 
06-15 09:15:14.765: W/System.err(29451): ... 14 more 

EDIT2 다음 SSL 컨텍스트가 실패 초기화 왜 기본 KeyManager를 만들 수 없습니다 그리고 그 어떤 이유의 KeyManager

06-15 10:45:14.886: W/System.err(32467): javax.net.ssl.SSLException: Connection closed by peer 
06-15 10:45:14.886: W/System.err(32467): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:263) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:197) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.commons.net.SocketClient.connect(SocketClient.java:164) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.commons.net.SocketClient.connect(SocketClient.java:184) 
06-15 10:45:14.886: W/System.err(32467): at org.apache.commons.net.SocketClient.connect(SocketClient.java:273) 
06-15 10:45:14.886: W/System.err(32467): at com.test.FTPClient$getFileListTask.doWhat(FTPClient.java:552) 
06-15 10:45:14.886: W/System.err(32467): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:203) 
06-15 10:45:14.886: W/System.err(32467): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:1) 
06-15 10:45:14.886: W/System.err(32467): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
06-15 10:45:14.894: W/System.err(32467): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-15 10:45:14.894: W/System.err(32467): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-15 10:45:14.901: W/System.err(32467): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
06-15 10:45:14.901: W/System.err(32467): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
06-15 10:45:14.901: W/System.err(32467): at java.lang.Thread.run(Thread.java:856) 
06-15 10:45:14.901: W/System.err(32467): java.net.SocketException: Socket closed 
06-15 10:45:14.909: W/System.err(32467): at libcore.io.Posix.sendtoBytes(Native Method) 
06-15 10:45:14.909: W/System.err(32467): at libcore.io.Posix.sendto(Posix.java:146) 
06-15 10:45:14.909: W/System.err(32467): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177) 
06-15 10:45:14.909: W/System.err(32467): at libcore.io.IoBridge.sendto(IoBridge.java:463) 
06-15 10:45:14.909: W/System.err(32467): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507) 
06-15 10:45:14.917: W/System.err(32467): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46) 
06-15 10:45:14.925: W/System.err(32467): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269) 
06-15 10:45:14.925: W/System.err(32467): at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167) 
06-15 10:45:14.925: W/System.err(32467): at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158) 
06-15 10:45:14.925: W/System.err(32467): at java.io.BufferedWriter.flush(BufferedWriter.java:124) 
06-15 10:45:14.925: W/System.err(32467): at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:477) 
06-15 10:45:14.925: W/System.err(32467): at org.apache.commons.net.ftp.FTPSClient.sendCommand(FTPSClient.java:486) 
06-15 10:45:14.925: W/System.err(32467): at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:537) 
06-15 10:45:14.925: W/System.err(32467): at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:586) 
06-15 10:45:14.925: W/System.err(32467): at org.apache.commons.net.ftp.FTP.syst(FTP.java:1504) 
06-15 10:45:14.933: W/System.err(32467): at org.apache.commons.net.ftp.FTPClient.getSystemType(FTPClient.java:2074) 
06-15 10:45:14.933: W/System.err(32467): at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2511) 
06-15 10:45:14.933: W/System.err(32467): at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2275) 
06-15 10:45:14.933: W/System.err(32467): at com.test.FTPClient$getFileListTask.doWhat(FTPClient.java:298) 
06-15 10:45:14.933: W/System.err(32467): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:205) 
06-15 10:45:14.933: W/System.err(32467): at com.test.FTPClient$getFileListTask.doInBackground(FTPClient.java:1) 
06-15 10:45:14.933: W/System.err(32467): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
06-15 10:45:14.933: W/System.err(32467): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-15 10:45:14.933: W/System.err(32467): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-15 10:45:14.933: W/System.err(32467): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
06-15 10:45:14.933: W/System.err(32467): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
06-15 10:45:14.933: W/System.err(32467): at java.lang.Thread.run(Thread.java:856) 
+0

게시 전체 스택 추적. –

+0

어떤 이유로 유효한 KeyManager를 찾을 수 없습니다. 어떤 기기/Android 버전에서 이것을 실행하고 있습니까? 또한 새로운 FTPSClient ("TLS");를 사용하여 차이가 있는지 확인하십시오. –

+0

Galaxy Nexus 4.0.4. 나도 TLS를 시도했지만 똑같은 일이 일어난다. 또한 암시 적 또는 명시 적으로 선언 할 경우 및 포트. 유효한 KeyManager? 그게 나에게 새로운 것. –

답변

2

와 예외 . 수동으로 기본값을 설치하십시오. 다음과 같음 :

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
kmf.init(null, null); 
KeyManager km = kmf.getKeyManagers()[0]; 

ftpsClient = new FTPSClient("SSL"); 
ftpsClient.setKeyManager(km); 
+0

다른 충돌이 발생하고 위의 스택 추적을 추가했습니다. 어떤 제안? –

+0

서버에 실제로 SSL이 필요합니까? 어떤 항구에요? 클라이언트 인증이 필요합니까? –

+0

현재이 서버에 대해 테스트하고 있습니다 : http://www.secureftp-test.com/. 그리고 그것은 FileZilla의 동일한 설정으로 잘 작동합니다. –

관련 문제