Skip to content

wss access from PC to Java-WebSocket on Android #167

Closed
@sowd

Description

@sowd

Hi,

I'm trying to build an Android wss server with Java-WebSocket and
access it from PC browsers (currently trying Chrome(25.0.1364.172)
and Firefox(19.0.2).)

Unfortunately, I have not been successful in doing this, obtaining
browser-dependent errors when connecting websocket from browsers.

myapp.bks file exists in the application resource folder.

Do you have any ideas to fix these problems?

Thank you in advance,

Shigeru

=====Android source code=====
public class SecureWebSocketServer extends WebSocketServer {

public void start() {
    if (bIsRunning)
        return;
    WebSocketImpl.DEBUG = true;

    if (!bSecureMode) {
        super.start();
        bIsRunning = true;
        return;
    }

    try {


        InputStream is = mContext.getResources().openRawResource(
                com.example.MyApp.R.raw.myapp);
        KeyStore ks = KeyStore.getInstance("BKS");
        ks.load(is, "secret".toCharArray());
        is.close();

        KeyManagerFactory kmf = KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm());
        Log.v(TAG, "KMF:"+KeyManagerFactory.getDefaultAlgorithm());
        kmf.init( ks, "secret".toCharArray() );

        TrustManagerFactory tmf = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
        Log.v(TAG, "TMF:"+TrustManagerFactory.getDefaultAlgorithm());

        tmf.init( ks );
        SSLContext sslContext = null;
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

        setWebSocketFactory(new DefaultSSLWebSocketServerFactory(sslContext));

        super.start();
        bIsRunning = true;
    } catch (KeyStoreException e) {e.printStackTrace();}
      catch (NoSuchAlgorithmException e) {e.printStackTrace();}
      catch (CertificateException e) {e.printStackTrace();}
      catch (FileNotFoundException e) {e.printStackTrace();}
      catch (IOException e) {e.printStackTrace();}
      catch (UnrecoverableKeyException e) { e.printStackTrace();}
      catch (KeyManagementException e) {e.printStackTrace();}
}

}

=====Chrome errors in Android console=====
03-25 16:51:54.594: W/System.err(31460): javax.net.ssl.SSLException: Error occured in delegated task:javax.net.ssl.SSLHandshakeException: PROTOCOL VERSION. Unsupported client version 32
03-25 16:51:54.594: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.fatalAlert(HandshakeProtocol.java:319)
03-25 16:51:54.604: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.wrap(HandshakeProtocol.java:271)
03-25 16:51:54.604: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.SSLEngineImpl.wrap(SSLEngineImpl.java:694)
03-25 16:51:54.604: W/System.err(31460): at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:462)
03-25 16:51:54.604: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.wrap(SSLSocketChannel2.java:141)
03-25 16:51:54.604: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.processHandshake(SSLSocketChannel2.java:132)
03-25 16:51:54.614: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.write(SSLSocketChannel2.java:192)
03-25 16:51:54.614: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.writeMore(SSLSocketChannel2.java:311)
03-25 16:51:54.614: W/System.err(31460): at com.example.MyApp.java_websocket.SocketChannelIOHelper.batch(SocketChannelIOHelper.java:47)
03-25 16:51:54.614: W/System.err(31460): at com.example.MyApp.java_websocket.server.WebSocketServer.run(WebSocketServer.java:349)
03-25 16:51:54.614: W/System.err(31460): at java.lang.Thread.run(Thread.java:856)
03-25 16:51:54.614: W/System.err(31460): Caused by: org.apache.harmony.xnet.provider.jsse.AlertException: javax.net.ssl.SSLHandshakeException: PROTOCOL VERSION. Unsupported client version 32
03-25 16:51:54.624: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.fatalAlert(HandshakeProtocol.java:308)
03-25 16:51:54.624: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl.processClientHello(ServerHandshakeImpl.java:334)
03-25 16:51:54.624: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl$1.run(ServerHandshakeImpl.java:124)
03-25 16:51:54.624: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.DelegatedTask.run(DelegatedTask.java:36)
03-25 16:51:54.624: W/System.err(31460): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
03-25 16:51:54.624: W/System.err(31460): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-25 16:51:54.634: W/System.err(31460): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-25 16:51:54.634: W/System.err(31460): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150)
03-25 16:51:54.634: W/System.err(31460): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264)
03-25 16:51:54.634: W/System.err(31460): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-25 16:51:54.634: W/System.err(31460): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-25 16:51:54.634: W/System.err(31460): ... 1 more
03-25 16:51:54.644: W/System.err(31460): Caused by: javax.net.ssl.SSLHandshakeException: PROTOCOL VERSION. Unsupported client version 32
03-25 16:51:54.644: W/System.err(31460): ... 12 more

=====Firefox errors in Android console=====

03-25 16:51:33.421: W/System.err(31460): javax.net.ssl.SSLException: Error occured in delegated task:javax.net.ssl.SSLHandshakeException: NO SERVER CERTIFICATE FOUND
03-25 16:51:33.421: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.fatalAlert(HandshakeProtocol.java:319)
03-25 16:51:33.421: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.wrap(HandshakeProtocol.java:271)
03-25 16:51:33.421: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.SSLEngineImpl.wrap(SSLEngineImpl.java:694)
03-25 16:51:33.431: W/System.err(31460): at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:462)
03-25 16:51:33.431: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.wrap(SSLSocketChannel2.java:141)
03-25 16:51:33.431: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.processHandshake(SSLSocketChannel2.java:132)
03-25 16:51:33.431: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.write(SSLSocketChannel2.java:192)
03-25 16:51:33.431: W/System.err(31460): at com.example.MyApp.java_websocket.SSLSocketChannel2.writeMore(SSLSocketChannel2.java:311)
03-25 16:51:33.431: W/System.err(31460): at com.example.MyApp.java_websocket.SocketChannelIOHelper.batch(SocketChannelIOHelper.java:47)
03-25 16:51:33.441: W/System.err(31460): at com.example.MyApp.java_websocket.server.WebSocketServer.run(WebSocketServer.java:349)
03-25 16:51:33.441: W/System.err(31460): at java.lang.Thread.run(Thread.java:856)
03-25 16:51:33.441: W/System.err(31460): Caused by: org.apache.harmony.xnet.provider.jsse.AlertException: javax.net.ssl.SSLHandshakeException: NO SERVER CERTIFICATE FOUND
03-25 16:51:33.441: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.HandshakeProtocol.fatalAlert(HandshakeProtocol.java:308)
03-25 16:51:33.441: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl.processClientHello(ServerHandshakeImpl.java:452)
03-25 16:51:33.451: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl$1.run(ServerHandshakeImpl.java:124)
03-25 16:51:33.451: W/System.err(31460): at org.apache.harmony.xnet.provider.jsse.DelegatedTask.run(DelegatedTask.java:36)
03-25 16:51:33.451: W/System.err(31460): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
03-25 16:51:33.451: W/System.err(31460): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-25 16:51:33.451: W/System.err(31460): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-25 16:51:33.451: W/System.err(31460): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150)
03-25 16:51:33.461: W/System.err(31460): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264)
03-25 16:51:33.461: W/System.err(31460): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-25 16:51:33.461: W/System.err(31460): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-25 16:51:33.461: W/System.err(31460): ... 1 more
03-25 16:51:33.461: W/System.err(31460): Caused by: javax.net.ssl.SSLHandshakeException: NO SERVER CERTIFICATE FOUND
03-25 16:51:33.461: W/System.err(31460): ... 12 more
03-25 16:51:33.511: W/System.err(31460): javax.net.ssl.SSLException: Error occured in delegated task:javax.net.ssl.SSLHandshakeException: NO SERVER CERTIFICATE FOUND

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions