apache commons net ssl ошибка рукопожатия с Android - PullRequest
1 голос
/ 18 июля 2011

Я искал ответ, но не нашел. Я программирую инструмент синхронизации FTP для Android, я хочу предоставить следующие типы серверов: - FTP -> Работает - SFTP -> Работы - FTPS -> больше не работает

Я использую библиотеку apache commons net, в начале в версии 2.2 теперь я проверял 3.0.1, а также снимок 3.1, но проблема не исчезла.

Сообщение об ошибке:

W/System.err(  433): javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x2672b0: Failure in SSL library, usually a protocol error
W/System.err(  433): error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol (external/openssl/ssl/s23_srvr.c:589 0xad12959f:0x00000000)
W/System.err(  433):    at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err(  433):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474)
W/System.err(  433):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
W/System.err(  433):    at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:259)
W/System.err(  433):    at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:200)
W/System.err(  433):    at org.apache.commons.net.SocketClient.connect(SocketClient.java:169)
W/System.err(  433):    at org.apache.commons.net.SocketClient.connect(SocketClient.java:189)
W/System.err(  433):    at com.syncoorp.FTPSyncX_Pro.server.FTPSServer.remoteConnect(FTPSServer.java:87)

Я не знаю, что я могу сделать сейчас, чтобы решить эту проблему, и я не хочу говорить своим клиентам, что они могут использовать только FTPS на Android <2.3 </p>

мой код для подключения:

        client = new FTPSClient(implictSSL);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
        kmf.init(KeyStore.getInstance("BKS"), "wshr.ut".toCharArray());         

        client.setTrustManager(new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() { return null; }
            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
        });

        client.setKeyManager(kmf.getKeyManagers()[0]);
        client.setNeedClientAuth(false);
        client.setUseClientMode(false);

         if(timeout > 0) {
            client.setConnectTimeout(timeout);
            client.setDataTimeout(timeout);
            client.setDefaultTimeout(timeout);
         }

        client.connect(values.host, values.port);

Кто-нибудь знает что-нибудь, как это исправить или есть обходной путь?

С наилучшими пожеланиями, PrDatur

...