[ 
https://issues.apache.org/jira/browse/DIRMINA-1083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16417054#comment-16417054
 ] 

Emmanuel Lecharny commented on DIRMINA-1083:
--------------------------------------------

It's a bit tricky, but as the failure is (almost) always reproductible, I can 
already tell that the problem is when the client (\{{LDAP API}}) is initiating 
the {{SSL}} handshake.

Technically speaking, the test starts a {{LDAP}} server (ApacheDS), no 
{{SSL/TLS}} is involved at this point, the {{LDAPS}} port is not enabled. The 
client (\{{LDAP API}}) is now sending a {{StartTLS}} extended operation (it's a 
{{LDAP}} request asking the server to establish a secure communication over an 
established {{TCP}} connection: we don't open a new connection).

There is a double {{SSL}} initialization occuring :
 * one on the server, as we inject the {{SSLFilter}} in the {{MINA}} chain,
 * one on the client, for the exact same reason.

The failure occurs on the second initialization, here are the {{MINA}} traces :

 
{noformat}
10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - Processing 
a MESSAGE_RECEIVED for session 1
[10:39:08] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:39:08] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:39:08] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:39:08] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:39:08] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:39:08] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:39:08] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Adding the SSL Filter 
sslFilter to the chain
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Server[1](no 
sslEngine) Initializing the SSL Handler
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Server[1](no 
sslEngine) SSL Handler Initialization done.
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...) : Starting the first handshake
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=40 
cap=40: 30 26 02 01 03 78 21 0A 01 00 04 00 04 00 8A 16...]
[10:39:09] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: StartTlsResponse :        Ldap Result
            Result code : (SUCCESS) success
            Matched Dn : 'null'
            Diagnostic message : 'null'

[10:39:09] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Adding the SSL Filter 
sslFilter to the chain
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Client[2](no 
sslEngine) Initializing the SSL Handler
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Client[2](no 
sslEngine) SSL Handler Initialization done.
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...) : Starting the first handshake
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_WRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=302 
cap=528: 16 03 03 01 29 01 00 01 25 03 03 5A BB 54 AD 04...]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Message received : HeapBuffer[pos=0 lim=302 cap=32768: 16 03 
03 01 29 01 00 01 25 03 03 5A BB 54 AD 04...]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session Client[2]: 
Writing Message : WriteRequest: HeapBuffer[pos=0 lim=7 cap=8: 15 03 01 00 02 01 
00]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) Processing the received message
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_TASK state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Unexpected exception 
from SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's 
close_notify: possible truncation attack?
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587)
    at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:1517)
    at org.apache.mina.filter.ssl.SslHandler.destroy(SslHandler.java:212)
    at org.apache.mina.filter.ssl.SslFilter.sessionClosed(SslFilter.java:493)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:597)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$2(DefaultIoFilterChain.java:593)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:1078)
    at 
org.apache.mina.core.filterchain.IoFilterAdapter.sessionClosed(IoFilterAdapter.java:97)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:597)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionClosed(DefaultIoFilterChain.java:590)
    at 
org.apache.mina.core.service.IoServiceListenerSupport.fireSessionDestroyed(IoServiceListenerSupport.java:251)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.removeNow(AbstractPollingIoProcessor.java:1163)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.removeSessions(AbstractPollingIoProcessor.java:864)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:694)
    at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_WRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=813 
cap=1057: 16 03 03 03 28 02 00 00 4D 03 03 5A BB 54 AD DE...]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Processing the SSL Data
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=78 
cap=78: 30 4C 02 01 00 78 47 0A 01 34 04 00 04 28 55 4E...]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : EXTENDED_RESPONSE
Message ID : 0
    Extended Response
        ResponseName :'1.3.6.1.4.1.1466.20036'
        Ldap Result
            Result code : (UNAVAILABLE) unavailable
            Matched Dn : 'null'
            Diagnostic message : 'UNAVAILABLE: The server will disconnect!'

[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=81 
cap=81: 30 4F 02 01 00 78 4A 0A 01 02 04 00 04 2B 50 52...]
[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : EXTENDED_RESPONSE
Message ID : 0
    Extended Response
        ResponseName :'1.3.6.1.4.1.1466.20036'
        Ldap Result
            Result code : (PROTOCOL_ERROR) protocolError
            Matched Dn : 'null'
            Diagnostic message : 'PROTOCOL_ERROR: The server will disconnect!'

[10:39:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session Server[1]: 
Writing Message : WriteRequest: HeapBuffer[pos=0 lim=7 cap=8: 15 03 03 00 02 01 
00]
java.io.IOException: Broken pipe[10:39:09] DEBUG 
[org.apache.mina.filter.ssl.SslHandler] - Unexpected exception from 
SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's 
close_notify: possible truncation attack?
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587)
    at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:1517)
    at org.apache.mina.filter.ssl.SslHandler.destroy(SslHandler.java:212)
    at org.apache.mina.filter.ssl.SslFilter.sessionClosed(SslFilter.java:493)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:597)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$2(DefaultIoFilterChain.java:593)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:1078)
    at 
org.apache.mina.core.filterchain.IoFilterAdapter.sessionClosed(IoFilterAdapter.java:97)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:597)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionClosed(DefaultIoFilterChain.java:590)
    at 
org.apache.mina.core.service.IoServiceListenerSupport.fireSessionDestroyed(IoServiceListenerSupport.java:251)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.removeNow(AbstractPollingIoProcessor.java:1163)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.writeBuffer(AbstractPollingIoProcessor.java:1115)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flushNow(AbstractPollingIoProcessor.java:994)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flush(AbstractPollingIoProcessor.java:921)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:688)
    at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
    at sun.nio.ch.IOUtil.write(IOUtil.java:65)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
    at 
org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.java:384)
    at 
org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.java:1)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.writeBuffer(AbstractPollingIoProcessor.java:1107)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flushNow(AbstractPollingIoProcessor.java:994)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flush(AbstractPollingIoProcessor.java:921)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:688)
    at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
{noformat}
 

This *might* be a timing issue, as the test is sometime running green when I'm 
debugging. Typically, here, what is interesting is that the 
{{ExtendedResponse}} is sent after the handsake failure, leading to an error 
(and it's expected, the socket has been closed, there is no way the server can 
send something to the client anymore.

Now, while debugging, I may get some different failure, like this one :

 
{noformat}

[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:49:58] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:49:58] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:49:58] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:49:58] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:49:58] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:49:58] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:49:58] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Adding the SSL Filter 
sslFilter to the chain
[10:49:58] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Server[1](no 
sslEngine) Initializing the SSL Handler
[10:49:58] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Server[1](no 
sslEngine) SSL Handler Initialization done.
[10:50:01] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...) : Starting the first handshake
[10:50:01] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:50:01] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=40 
cap=40: 30 26 02 01 03 78 21 0A 01 00 04 00 04 00 8A 16...]
[10:50:01] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:50:01] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: StartTlsResponse :        Ldap Result
            Result code : (SUCCESS) success
            Matched Dn : 'null'
            Diagnostic message : 'null'

[10:50:01] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:50:09] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Adding the SSL Filter 
sslFilter to the chain
[10:50:09] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Client[2](no 
sslEngine) Initializing the SSL Handler
[10:50:10] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session Client[2](no 
sslEngine) SSL Handler Initialization done.
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...) : Starting the first handshake
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=302 
cap=528: 16 03 03 01 29 01 00 01 25 03 03 5A BB 57 42 0E...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Message received : HeapBuffer[pos=0 lim=302 cap=32768: 16 03 
03 01 29 01 00 01 25 03 03 5A BB 57 42 0E...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) Processing the received message
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_TASK state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=813 
cap=1057: 16 03 03 03 28 02 00 00 4D 03 03 5A BB 57 43 CC...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Processing the SSL Data
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Message received : HeapBuffer[pos=0 lim=813 cap=1024: 16 03 
03 03 28 02 00 00 4D 03 03 5A BB 57 43 CC...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) Processing the received message
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_TASK state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=75 
cap=132: 16 03 03 00 46 10 00 00 42 41 04 99 35 BB 5F 31...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=6 
cap=8: 14 03 03 00 01 01]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=101 
cap=132: 16 03 03 00 60 E1 61 07 0A 9C 58 C8 0E BD 07 72...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Processing the SSL Data
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Message received : HeapBuffer[pos=0 lim=182 cap=16384: 16 03 
03 00 46 10 00 00 42 41 04 99 35 BB 5F 31...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) Processing the received message
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_TASK state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=6 
cap=8: 14 03 03 00 01 01]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the NEED_WRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](ssl...): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=101 
cap=132: 16 03 03 00 60 99 31 3B FC A6 9D E5 7B 8B AB CF...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](ssl...) processing the FINISHED state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) is now secured
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) processing the FINISHED state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) is now secured
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Processing the SSL Data
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: StartTlsResponse :        Ldap Result
            Result code : (SUCCESS) success
            Matched Dn : 'null'
            Diagnostic message : 'null'

[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](ssl...): Message received : HeapBuffer[pos=0 lim=107 cap=1024: 14 03 
03 00 01 01 16 03 03 00 60 99 31 3B FC A6...]
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) Processing the received message
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the NEED_UNWRAP state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](ssl...) processing the FINISHED state
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](SSL) is now secured
[10:50:11] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=61 cap=61: 
30 3B 02 01 04 63 36 04 13 75 69 64 3D 61 64 6D...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Message received : HeapBuffer[pos=0 lim=133 cap=16384: 17 03 03 
00 80 CA 0F 40 89 1A 3E 70 F6 6D 00 9C...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:50:14] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=1706 
cap=1706: 30 82 06 A6 02 01 04 64 82 06 9F 04 13 75 69 64...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Message received : HeapBuffer[pos=0 lim=512 cap=512: 17 03 03 
06 F0 19 77 B0 A3 6F 3B B0 14 CC 5E C5...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : SEARCH_RESULT_ENTRY
Message ID : 4
    Search Result Entry
Entry
    dn[n]: uid=admin,ou=system
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: tlsKeyInfo
    uid: admin
    userPassword: 0x73 0x65 0x63 0x72 0x65 0x74
    publicKey: 0x30 0x81 0x9F 0x30 0x0D 0x06 0x09 0x2A 0x86 0x48 0x86 0xF7 0x0D 
0x01 0x01 0x01 ...
    publicKeyFormat: X.509
    userCertificate: 0x30 0x82 0x01 0xF8 0x30 0x82 0x01 0x61 0x02 0x06 0x01 
0x62 0x6B 0xCC 0xAC 0x66 ...
    privateKey: 0x30 0x82 0x02 0x76 0x02 0x01 0x00 0x30 0x0D 0x06 0x09 0x2A 
0x86 0x48 0x86 0xF7 ...
    keyAlgorithm: RSA
    privateKeyFormat: PKCS#8
    cn: system administrator
    sn: administrator
    displayName: Directory Superuser

[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=14 cap=14: 
30 0C 02 01 04 65 07 0A 01 00 04 00 04 00]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Message received : HeapBuffer[pos=0 lim=1024 cap=1024: BA 78 7C 
1E 15 D5 A7 31 2B BA 07 F7 8A A2 CE 78...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : SEARCH_RESULT_DONE
Message ID : 4
    Search Result Done
        Ldap Result
            Result code : (SUCCESS) success
            Matched Dn : 'null'
            Diagnostic message : 'null'

[10:50:14] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Message received : HeapBuffer[pos=0 lim=330 cap=2048: 52 10 7C 
4A CA 65 9E 03 48 82 D7 9D 01 C9 5A 97...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Client[2](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 2
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : SEARCH_REQUEST
Message ID : 4
    SearchRequest
        baseDn : 'uid=admin,ou=system'
        filter : '(objectClass=*)'
        scope : base object
        typesOnly : false
        Size Limit : no limit
        Time Limit : no limit
        Deref Aliases : deref Always
        attributes : '*'
org.apache.directory.api.ldap.model.message.SearchRequestImpl@6f1f8e8e
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Writing Message : WriteRequest: HeapBuffer[pos=0 lim=7 cap=7: 
30 05 02 01 05 42 00]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Client[2](SSL): Writing Message : MessageWriteRequest, parent : WR 
WrapperWriteRequest: MessageType : UNBIND_REQUEST
Message ID : 5
    UnBind 
Requestorg.apache.directory.api.ldap.model.message.UnbindRequestImpl@b33423f3
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Message received : HeapBuffer[pos=0 lim=85 cap=8192: 17 03 03 
00 50 BD D4 DD 89 66 CB 19 3C 86 5C CA...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session Client[2]: 
Writing Message : WriteRequest: HeapBuffer[pos=0 lim=85 cap=132: 15 03 03 00 50 
18 3D 5E 50 F7 D6 DB 74 E6 B1 83...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.codec.ProtocolCodecFilter] - 
Processing a MESSAGE_RECEIVED for session 1
[10:50:14] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Firing a 
MESSAGE_RECEIVED event for session 1
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Message received : HeapBuffer[pos=0 lim=85 cap=8192: 15 03 03 
00 50 18 3D 5E 50 F7 D6 DB 74 E6 B1 83...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Session 
Server[1](SSL) Processing the received message
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session 
Server[1](SSL): Processing the SSL Data
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session Server[1]: 
Writing Message : WriteRequest: HeapBuffer[pos=0 lim=85 cap=132: 15 03 03 00 50 
05 1C E6 FC 3B 8C CD 57 44 77 D8...]
[10:50:14] DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] - Event 
MESSAGE_RECEIVED has been fired for session 1
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslFilter] - Session Client[2]: 
Message received : HeapBuffer[pos=0 lim=85 cap=2048: 15 03 03 00 50 05 1C E6 FC 
3B 8C CD 57 44 77 D8...]
[10:50:14] DEBUG [org.apache.mina.filter.ssl.SslHandler] - Unexpected exception 
from SSLEngine.closeInbound().
javax.net.ssl.SSLException: Inbound closed before receiving peer's 
close_notify: possible truncation attack?
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587)
    at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:1517)
    at org.apache.mina.filter.ssl.SslHandler.destroy(SslHandler.java:212)
    at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:520)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$6(DefaultIoFilterChain.java:637)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1114)
    at 
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:121)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:641)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:634)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$17(AbstractPollingIoProcessor.java:505)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1242)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1231)
    at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
    at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
{noformat}
 

Here, the handshake was fine on both side, then we can see in this trace that 
the client is sending a {{SearchRequest}} and get the result properly - so far, 
so good -, the failure happens at the very end, when the client has sent an 
{{UnbindRequest}}. Now, this is a bit weird, because such a request does not 
expect to receive any response. I would assume it's the moment the {{SSL}} 
binding is being shut down.

 

I'm still diging... What makes things more complex is that I'm using {{MINA}} 
at both sides, so the problem may be on the client or server side. I may switch 
to {{MINA 2.0.16}} on the server side and keep {{MINA 2.0.17}} on the client 
side, to see if it still fails, that would make things easier to debug...

> Regression on SSL connection
> ----------------------------
>
>                 Key: DIRMINA-1083
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1083
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.17
>            Reporter: Emmanuel Lecharny
>            Priority: Major
>             Fix For: 2.0.18
>
>
> We are using MINA in Apache Directory. After having moved to MINA 2.0.17, we 
> now have failures like :
> {noformat}
> Running org.apache.directory.shared.client.api.LdapSSLConnectionTest
> java.io.IOException: Broken pipe
>     at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
>     at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
>     at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
>     at sun.nio.ch.IOUtil.write(IOUtil.java:65)
>     at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
>     at 
> org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.java:384)
>     at 
> org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.java:47)
>     at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.writeBuffer(AbstractPollingIoProcessor.java:1107)
>     at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flushNow(AbstractPollingIoProcessor.java:994)
>     at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.flush(AbstractPollingIoProcessor.java:921)
>     at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:688)
>     at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>     at java.lang.Thread.run(Thread.java:748)
> {noformat}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to