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