users@tyrus.java.net

Re: Secure web socket in Android

From: Petr Janouch <petr.janouch_at_oracle.com>
Date: Sun, 24 May 2015 23:01:31 +0200

Hi Wei Wei,

I have had a look at it and it seems that there is a bug in Android OpenSSLEngineImpl parameter validation.

I have updated Android Issue tracker about it:
https://code.google.com/p/android/issues/detail?id=103251

Best Regards
Petr
On 05 May 2015, at 15:39, Pavel Bucek <pavel.bucek_at_oracle.com> wrote:

>
> Hi Wei Wei,
>
> can you share reproducible testcase?
>
> Thanks,
> Pavel
>
>
> On 05/05/15 11:48, Mitt W wrote:
>> Hi,
>>
>> I’ve faced an exception when securing web socket with Tyrus. In iOS, ws and was work just fine, however ws works, wss don’t work in Android. The error info is pasted below:
>>
>> W/DefaultFilterChain﹕ GRIZZLY0013: Exception during FilterChain execution
>> java.lang.IllegalArgumentException: one of the src == null
>> at com.android.org.conscrypt.OpenSSLEngineImpl.wrap(OpenSSLEngineImpl.java:525)
>> at org.glassfish.grizzly.ssl.SSLConnectionContext.wrap(SSLConnectionContext.java:286)
>> at org.glassfish.grizzly.ssl.SSLConnectionContext.wrapAll(SSLConnectionContext.java:227)
>> at org.glassfish.grizzly.ssl.SSLBaseFilter.wrapAll(SSLBaseFilter.java:405)
>> at org.glassfish.grizzly.ssl.SSLBaseFilter.handleWrite(SSLBaseFilter.java:320)
>> at org.glassfish.grizzly.ssl.SSLFilter.accurateWrite(SSLFilter.java:263)
>> at org.glassfish.grizzly.ssl.SSLFilter.handleWrite(SSLFilter.java:143)
>> at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:111)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:291)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:209)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:137)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:115)
>> at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
>> at org.glassfish.grizzly.filterchain.FilterChainContext$1.run(FilterChainContext.java:191)
>> at org.glassfish.grizzly.filterchain.FilterChainContext.resume(FilterChainContext.java:215)
>> at org.glassfish.grizzly.ssl.SSLFilter$SSLHandshakeContext.completed(SSLFilter.java:383)
>> at org.glassfish.grizzly.ssl.SSLFilter.notifyHandshakeComplete(SSLFilter.java:278)
>> at org.glassfish.grizzly.ssl.SSLBaseFilter.handleRead(SSLBaseFilter.java:275)
>> at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:291)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:209)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:137)
>> at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:115)
>> at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
>> at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:550)
>> at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
>> at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
>> at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
>> at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
>> at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
>> at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
>> at java.lang.Thread.run(Thread.java:818)
>> 05-05 17:42:00.416 25893-26589/com.example.AndroidClientTest W/System.err﹕ javax.websocket.DeploymentException: Handshake response not received.
>> 05-05 17:42:00.417 25893-26589/com.example.AndroidClientTest W/System.err﹕ at org.glassfish.tyrus.client.ClientManager$1$1.run(ClientManager.java:490)
>> 05-05 17:42:00.417 25893-26589/com.example.AndroidClientTest W/System.err﹕ at org.glassfish.tyrus.client.ClientManager$1.run(ClientManager.java:502)
>> 05-05 17:42:00.417 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at org.glassfish.tyrus.client.ClientManager$SameThreadExecutorService.execute(ClientManager.java:654)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:81)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:359)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:231)
>> 05-05 17:42:00.418 25893-26589/com.example.AndroidClientTest W/System.err﹕ at com.example.AndroidClientTest.MyActivity$1$1.doInBackground(MyActivity.java:51)
>> 05-05 17:42:00.419 25893-26589/com.example.AndroidClientTest W/System.err﹕ at com.example.AndroidClientTest.MyActivity$1$1.doInBackground(MyActivity.java:44)
>> 05-05 17:42:00.419 25893-26589/com.example.AndroidClientTest W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:292)
>> 05-05 17:42:00.419 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
>> 05-05 17:42:00.419 25893-26589/com.example.AndroidClientTest W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
>> 05-05 17:42:00.419 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
>> 05-05 17:42:00.420 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
>> 05-05 17:42:00.420 25893-26589/com.example.AndroidClientTest W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
>>
>> Best
>> Wei Wei
>