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)
게시 전체 스택 추적. –
어떤 이유로 유효한 KeyManager를 찾을 수 없습니다. 어떤 기기/Android 버전에서 이것을 실행하고 있습니까? 또한 새로운 FTPSClient ("TLS");를 사용하여 차이가 있는지 확인하십시오. –
Galaxy Nexus 4.0.4. 나도 TLS를 시도했지만 똑같은 일이 일어난다. 또한 암시 적 또는 명시 적으로 선언 할 경우 및 포트. 유효한 KeyManager? 그게 나에게 새로운 것. –