Description
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