You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by zhuaiguo <zh...@hotmail.com> on 2008/10/21 18:07:21 UTC

SSL issure on Mina_2.0.0_M3

Hi guys,
 
I found an issure about SSL on Mina_2.0.0_M3. When I build a server using SSL, it works very fine with the ssl client built in Java. However, I tried similar client built in C#, the server with mina ssl throwed exception as follow.
 
When I downgrade the program to Mina_1.1.7, everything works fine. I believe there are some bugs in the Mina_2.0.2 codes. 
 
java.lang.IllegalArgumentException        at java.nio.Buffer.position(Buffer.java:218)        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:185)        at com.sun.net.ssl.internal.ssl.EngineArgs.gather(EngineArgs.java:140)        at com.sun.net.ssl.internal.ssl.EngineOutputRecord.write(EngineOutputRecord.java:232)        at com.sun.net.ssl.internal.ssl.EngineWriter.writeRecord(EngineWriter.java:165)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeRecord(SSLEngineImpl.java:1151)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1121)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1036)        at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:452)        at org.apache.mina.filter.ssl.SslHandler.encrypt(SslHandler.java:348)        at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:534)        at org.apache.mina.filter.ssl.SslHandler.writeNetBuffer(SslHandler.java:546)        at org.apa
 che.mina.filter.ssl.SslHandler.handshake(SslHandler.java:489)        at org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:286)        at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:407)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)        at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)        at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:60)        at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:551)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:543)        at org.apach
 e.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:487)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concur
 rent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.lang.IllegalArgumentException        at java.nio.Buffer.position(Buffer.java:218)        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:185)        at com.sun.net.ssl.internal.ssl.EngineArgs.gather(EngineArgs.java:140)        at com.sun.net.ssl.internal.ssl.EngineOutputRecord.write(EngineOutputRecord.java:232)        at com.sun.net.ssl.internal.ssl.EngineWriter.writeRecord(EngineWriter.java:165)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeRecord(SSLEngineImpl.java:1151)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1121)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1036)        at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:452)        at org.apache.mina.filter.ssl.SslHandler.enc
 rypt(SslHandler.java:348)        at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:534)        at org.apache.mina.filter.ssl.SslHandler.writeNetBuffer(SslHandler.java:546)        at org.apache.mina.filter.ssl.SslHandler.handshake(SslHandler.java:489)        at org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:286)        at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:407)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)        at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)        at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:60)        at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)        at org.apache.mina.filter.executor.OrderedThr
 eadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:551)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:543)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:487)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.min
 a.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$50
 0(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org
 .apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProc
 essor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685
 )        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractP
 ollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)org.apache.mina.core.write.WriteTimeoutException        at org.apache.mina.core.session.IdleStatusChecker.notifyWriteTimeout(IdleStatusChecker.java:254)        at org.apache.mina.core.session.IdleStatusChecker.notifyIdleSession(IdleStatusChecker.java:200)        at or
 g.apache.mina.core.session.IdleStatusChecker.notifyIdleness(IdleStatusChecker.java:150)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.notifyIdleSessions(AbstractPollingIoProcessor.java:604)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$700(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:863)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)[DEBUG] 17:30:59,890 - Unexpected exception from SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1366)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1334)        at com.sun.net.ssl.internal.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:1273)        at org.apache.mina.filter.ssl.SslHandler.destroy(SslHandler.java:155)        at org.apache.mina.filter.ssl.SslFilter.sessionClosed(SslFilter.java:386)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:378)        at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:49)        at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:817)        at org.apache.mina.core.filterchain
 .IoFilterEvent.fire(IoFilterEvent.java:87)        at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:551)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:543)        at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:487)        at java.lang.Thread.run(Thread.java:619)java.nio.InvalidMarkException        at java.nio.Buffer.reset(Buffer.java:280)        at org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:336)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:759)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:685)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPol
 lingIoProcessor.java:621)        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$500(AbstractPollingIoProcessor.java:58)        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:861)        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)        at java.lang.Thread.run(Thread.java:619)
 
 
Hope it can help,
 
thanks 
 
Aiguo
_________________________________________________________________
MSN 中文网,最新时尚生活资讯,白领聚集门户。
http://cn.msn.com

Re: SSL issure on Mina_2.0.0_M3

Posted by Emmanuel Lecharny <el...@gmail.com>.
zhuaiguo wrote:
> Hi guys,
>  
> I found an issure about SSL on Mina_2.0.0_M3. When I build a server using SSL, it works very fine with the ssl client built in Java. However, I tried similar client built in C#, the server with mina ssl throwed exception as follow.
>   
Do you have the server code and client code which demonstrate the
problem? It's pretty complicated to see what's going on with a hundreds
line long stack trace...

Also please provide some information about the JVM you are using, and
the system you are running on.

PS: and, please, when you provide a stacktrace, add some new lines !!!

-- 
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org