Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] SSL Server [ERROR] BufferUnderflowException(BufferUnderflowException at server while connecting)
[CDO] SSL Server [ERROR] BufferUnderflowException [message #973581] Tue, 06 November 2012 13:00 Go to next message
Bernold Kraft is currently offline Bernold KraftFriend
Messages: 11
Registered: October 2012
Junior Member
Hi there,

I am testing a CDO 4.1 server using a SSL connection. Everything went well with a simple TCP connection based on the example server. Currently the client connection test fails on server side due to an occuring java.nio.BufferUnderflowException.

Some details:
- CDO 4.1.1.v20120911-1146 (Juno SR1 release)
- Win x86_64 machine, Win7, Java7_09

To mention first, the NIO exception lets me think of an native problem within the 64bit enviroment, but I am not sure about that. I'm not very familiar with the Net4j interna. As far as I see, the SSL handshake works, but a read attempt fails afterwards.

What I've done so far:

- a CDO server based on the example master server (org.eclipse.emf.cdo.examples.installer.master) with a acceptor type "ssl"
<acceptor type="ssl" listenAddr="0.0.0.0" port="2036"/>


- created a keystore and truststore according to bug report https://bugs.eclipse.org/bugs/show_bug.cgi?id=333947 and modified the vmargs for launch
-Xms40m
-Xmx1024m
-Ddebug=true
-Dnet4j.config="${project_loc:/org.eclipse.emf.cdo.examples.installer.master}/config"
-Dorg.eclipse.emf.cdo.server.browser.port=7777
-Dosgi.console.enable.builtin=true
-Djavax.net.ssl.trustStore=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/truststore.jks 
-Djavax.net.ssl.trustStorePassword=truststore
-Djavax.net.ssl.keyStore=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/keystore.test.jks
-Djavax.net.ssl.keyStorePassword=truststore
-Dorg.eclipse.net4j.tcp.ssl.passphrase=truststore
-Dorg.eclipse.net4j.tcp.ssl.trust=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/truststore.jks 
-Dorg.eclipse.net4j.tcp.ssl.key=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/keystore.test.jks
-Dsun.security.ssl.allowUnsafeRenegotiation=true 
-Dorg.eclipse.net4j.util.om.trace.disable=false


- enabled tracing

- created a test client connection with

    // Enable logging and tracing
    OMPlatform.INSTANCE.setDebugging(true);
    OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
    OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);

    // Prepare container
    IManagedContainer container = ContainerUtil.createContainer();
    Net4jUtil.prepareContainer(container); // Register Net4j factories
    SSLUtil.prepareContainer(container);
    CDONet4jUtil.prepareContainer(container); // Register CDO factories
    container.activate();

    // Create connector
    IConnector connector = SSLUtil.getConnector(container, CDOTests.URL);

    // Create configuration
    CDONet4jSessionConfiguration configuration = CDONet4jUtil.createNet4jSessionConfiguration();
    configuration.setConnector(connector);
    configuration.setRepositoryName(CDOTests.REPO); 

    // Open session
    CDOSession session = configuration.openNet4jSession();
    session.options().setGeneratedPackageEmulationEnabled(true);
    
    CDOTransaction cdoTransaction = session.openTransaction();
    assert null!=cdoTransaction.getResourceNode("testResource"); //$NON-NLS-1$
    
    session.close();
    
    connector.close();


A BufferUnderflowException occurs at:
TCPSelector [debug] Executing server operation REGISTER java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
TCPSelector [debug] Registering java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
TCPSelector [debug.connector] Setting state CONNECTED (was connecting) for SSLServerConnector[127.0.0.1:49.682]
TCPSelector [debug.acceptor] Added connector SSLServerConnector[127.0.0.1:49.682]
TCPSelector [debug] Reading java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
net4j-Thread-1 [debug] Scheduled task: sun.security.ssl.Handshaker$DelegatedTask@35725349
net4j-Thread-1 [debug] Scheduled task: sun.security.ssl.Handshaker$DelegatedTask@72f51247
TCPSelector [debug.lifecycle] Activating SignalProtocol[cdo]
TCPSelector [debug.lifecycle.dump] DUMP  CDOServerProtocol@36
  Protocol.type = cdo
  Protocol.executorService = java.util.concurrent.ThreadPoolExecutor@2aa68b6a[Running, pool size = 2, active threads = 0, queued tasks = 0, completed tasks = 3]
  Protocol.bufferProvider = Channel[-32.768, SERVER]
  Protocol.infraStructure = null
  Protocol.channel = Channel[-32.768, SERVER]
  Protocol.userID = null
  SignalProtocol.timeout = 10000
  SignalProtocol.streamWrapper = null
  SignalProtocol.signals = 
  SignalProtocol.nextCorrelationID = 1
  SignalProtocol.failingOver = false
  negotiationTimeout = 15000
  repositoryProvider = org.eclipse.emf.cdo.spi.server.PluginRepositoryProvider@2b02a8fb
  packageURICompressor = StringCompressor[client=false]

TCPSelector [debug.connector] Opening channel with protocol cdo
TCPSelector [debug.lifecycle] Activating Channel[1, SERVER, cdo]
TCPSelector [debug.lifecycle] Activating ReceiveSerializer@37
TCPSelector [debug.lifecycle.dump] DUMP  ReceiveSerializer@37
  Worker.daemon = false
  Worker.activationTimeout = 10000
  Worker.deactivationTimeout = 10000
  QueueWorker.queue = 
  QueueWorker.pollMillis = 100

TCPSelector [debug.lifecycle.dump] DUMP  Channel@38
  userID = null
  channelMultiplexer = SSLServerConnector[127.0.0.1:49.682]
  id = 1
  receiveExecutor = java.util.concurrent.ThreadPoolExecutor@2aa68b6a[Running, pool size = 2, active threads = 0, queued tasks = 0, completed tasks = 3]
  receiveHandler = SignalProtocol[cdo]
  receiveSerializer = ReceiveSerializer@37
  sendQueue = 
  sentBuffers = 0
  receivedBuffers = 0

TCPSelector [debug.channel] Handling buffer: Buffer@39[PUTTING] --> Channel[Control, SERVER]
TCPSelector [debug] Ordering server operation INTEREST READ java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
TCPSelector [debug] Ordering server operation INTEREST WRITE java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
TCPSelector [debug] Executing server operation INTEREST READ java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
TCPSelector [debug] Setting interest  (was read)
TCPSelector [debug] Executing server operation INTEREST WRITE java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
TCPSelector [debug] Setting interest WRITE
TCPSelector [debug] Writing java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
TCPSelector [debug] Ordering server operation INTEREST WRITE java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
TCPSelector [debug] Ordering server operation INTEREST READ java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
TCPSelector [debug] Executing server operation INTEREST WRITE java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
TCPSelector [debug] Setting interest  (was write)
TCPSelector [debug] Executing server operation INTEREST READ java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
TCPSelector [debug] Setting interest READ
TCPSelector [debug] Reading java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
[ERROR] BufferUnderflowException
net4j-Thread-1 [debug.lifecycle] Deactivating SSLServerConnector[127.0.0.1:49.682]
net4j-Thread-1 [debug.lifecycle] Deactivating Channel[Control, SERVER]
net4j-Thread-1 [debug.lifecycle] Deactivating ReceiveSerializer@33
net4j-Thread-1 [debug.connector] Setting state DISCONNECTED (was connected) for SSLServerConnector[null:0]
net4j-Thread-1 [debug.lifecycle] Deactivating Channel[1, SERVER, cdo]
net4j-Thread-1 [debug.lifecycle] Deactivating ReceiveSerializer@37
net4j-Thread-1 [debug.lifecycle] Deactivating SignalProtocol[cdo]
java.nio.BufferUnderflowException
	at java.nio.Buffer.nextGetIndex(Buffer.java:498)
	at java.nio.DirectByteBuffer.getShort(DirectByteBuffer.java:580)
	at org.eclipse.net4j.internal.tcp.ssl.SSLBuffer.startGetting(SSLBuffer.java:84)
	at org.eclipse.net4j.internal.tcp.TCPConnector.handleRead(TCPConnector.java:220)
	at org.eclipse.net4j.internal.tcp.ssl.SSLConnector.handleRead(SSLConnector.java:70)
	at org.eclipse.net4j.internal.tcp.TCPSelector.handleSelection(TCPSelector.java:255)
	at org.eclipse.net4j.internal.tcp.TCPSelector.run(TCPSelector.java:170)
	at java.lang.Thread.run(Thread.java:722)
[ERROR] BufferOverflowException
java.nio.BufferOverflowException
	at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:357)
	at org.eclipse.net4j.internal.tcp.ssl.SSLBuffer.startGetting(SSLBuffer.java:79)
	at org.eclipse.net4j.internal.tcp.TCPConnector.handleRead(TCPConnector.java:220)
	at org.eclipse.net4j.internal.tcp.ssl.SSLConnector.handleRead(SSLConnector.java:76)
	at org.eclipse.net4j.internal.tcp.TCPSelector.handleSelection(TCPSelector.java:255)
	at org.eclipse.net4j.internal.tcp.TCPSelector.run(TCPSelector.java:170)
	at java.lang.Thread.run(Thread.java:722)
net4j-Thread-1 [debug.acceptor] Removed connector SSLServerConnector[null:0]


Any ideas anyone?

Regards,
Bernold
Re: [CDO] SSL Server [ERROR] BufferUnderflowException [message #973643 is a reply to message #973581] Tue, 06 November 2012 13:55 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Bernold,

The SSL connector has been developed by NoMagic and I'm not able to give advice for it. I've cc'ed Saulius from NoMagic
in the hope that he can provide more infos.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 06.11.2012 14:43, schrieb Bernold Kraft:
> Hi there,
>
> I am testing a CDO 4.1 server using a SSL connection. Everything went well with a simple TCP connection based on the
> example server. Currently the client connection test fails on server side due to an occuring
> java.nio.BufferUnderflowException.
>
> Some details:
> - CDO 4.1.1.v20120911-1146 (Juno SR1 release)
> - Win x86_64 machine, Win7, Java7_09
>
> To mention first, the NIO exception lets me think of an native problem within the 64bit enviroment, but I am not sure
> about that. I'm not very familiar with the Net4j interna. As far as I see, the SSL handshake works, but a read attempt
> fails afterwards.
>
> What I've done so far:
>
> - a CDO server based on the example master server (org.eclipse.emf.cdo.examples.installer.master) with a acceptor type
> "ssl"
> <acceptor type="ssl" listenAddr="0.0.0.0" port="2036"/>
>
> - created a keystore and truststore according to bug report https://bugs.eclipse.org/bugs/show_bug.cgi?id=333947 and
> modified the vmargs for launch
> -Xms40m
> -Xmx1024m
> -Ddebug=true
> -Dnet4j.config="${project_loc:/org.eclipse.emf.cdo.examples.installer.master}/config"
> -Dorg.eclipse.emf.cdo.server.browser.port=7777
> -Dosgi.console.enable.builtin=true
> -Djavax.net.ssl.trustStore=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/truststore.jks
> -Djavax.net.ssl.trustStorePassword=truststore
> -Djavax.net.ssl.keyStore=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/keystore.test.jks
> -Djavax.net.ssl.keyStorePassword=truststore
> -Dorg.eclipse.net4j.tcp.ssl.passphrase=truststore
> -Dorg.eclipse.net4j.tcp.ssl.trust=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/truststore.jks
> -Dorg.eclipse.net4j.tcp.ssl.key=file:///${resource_loc:org.eclipse.emf.cdo.examples.installer.master/ssl}/keystore.test.jks
>
> -Dsun.security.ssl.allowUnsafeRenegotiation=true -Dorg.eclipse.net4j.util.om.trace.disable=false
>
>
> - enabled tracing
>
> - created a test client connection with
>
>
> // Enable logging and tracing
> OMPlatform.INSTANCE.setDebugging(true);
> OMPlatform.INSTANCE.addLogHandler(PrintLogHandler.CONSOLE);
> OMPlatform.INSTANCE.addTraceHandler(PrintTraceHandler.CONSOLE);
>
> // Prepare container
> IManagedContainer container = ContainerUtil.createContainer();
> Net4jUtil.prepareContainer(container); // Register Net4j factories
> SSLUtil.prepareContainer(container);
> CDONet4jUtil.prepareContainer(container); // Register CDO factories
> container.activate();
>
> // Create connector
> IConnector connector = SSLUtil.getConnector(container, CDOTests.URL);
>
> // Create configuration
> CDONet4jSessionConfiguration configuration = CDONet4jUtil.createNet4jSessionConfiguration();
> configuration.setConnector(connector);
> configuration.setRepositoryName(CDOTests.REPO);
> // Open session
> CDOSession session = configuration.openNet4jSession();
> session.options().setGeneratedPackageEmulationEnabled(true);
> CDOTransaction cdoTransaction = session.openTransaction();
> assert null!=cdoTransaction.getResourceNode("testResource"); //$NON-NLS-1$
> session.close();
> connector.close();
>
>
> A BufferUnderflowException occurs at:
>
> TCPSelector [debug] Executing server operation REGISTER java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
> TCPSelector [debug] Registering java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
> TCPSelector [debug.connector] Setting state CONNECTED (was connecting) for SSLServerConnector[127.0.0.1:49.682]
> TCPSelector [debug.acceptor] Added connector SSLServerConnector[127.0.0.1:49.682]
> TCPSelector [debug] Reading java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
> net4j-Thread-1 [debug] Scheduled task: sun.security.ssl.Handshaker$DelegatedTask@35725349
> net4j-Thread-1 [debug] Scheduled task: sun.security.ssl.Handshaker$DelegatedTask@72f51247
> TCPSelector [debug.lifecycle] Activating SignalProtocol[cdo]
> TCPSelector [debug.lifecycle.dump] DUMP CDOServerProtocol@36
> Protocol.type = cdo
> Protocol.executorService = java.util.concurrent.ThreadPoolExecutor@2aa68b6a[Running, pool size = 2, active threads =
> 0, queued tasks = 0, completed tasks = 3]
> Protocol.bufferProvider = Channel[-32.768, SERVER]
> Protocol.infraStructure = null
> Protocol.channel = Channel[-32.768, SERVER]
> Protocol.userID = null
> SignalProtocol.timeout = 10000
> SignalProtocol.streamWrapper = null
> SignalProtocol.signals = SignalProtocol.nextCorrelationID = 1
> SignalProtocol.failingOver = false
> negotiationTimeout = 15000
> repositoryProvider = org.eclipse.emf.cdo.spi.server.PluginRepositoryProvider@2b02a8fb
> packageURICompressor = StringCompressor[client=false]
>
> TCPSelector [debug.connector] Opening channel with protocol cdo
> TCPSelector [debug.lifecycle] Activating Channel[1, SERVER, cdo]
> TCPSelector [debug.lifecycle] Activating ReceiveSerializer@37
> TCPSelector [debug.lifecycle.dump] DUMP ReceiveSerializer@37
> Worker.daemon = false
> Worker.activationTimeout = 10000
> Worker.deactivationTimeout = 10000
> QueueWorker.queue = QueueWorker.pollMillis = 100
>
> TCPSelector [debug.lifecycle.dump] DUMP Channel@38
> userID = null
> channelMultiplexer = SSLServerConnector[127.0.0.1:49.682]
> id = 1
> receiveExecutor = java.util.concurrent.ThreadPoolExecutor@2aa68b6a[Running, pool size = 2, active threads = 0, queued
> tasks = 0, completed tasks = 3]
> receiveHandler = SignalProtocol[cdo]
> receiveSerializer = ReceiveSerializer@37
> sendQueue = sentBuffers = 0
> receivedBuffers = 0
>
> TCPSelector [debug.channel] Handling buffer: Buffer@39[PUTTING] --> Channel[Control, SERVER]
> TCPSelector [debug] Ordering server operation INTEREST READ java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
> TCPSelector [debug] Ordering server operation INTEREST WRITE java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
> TCPSelector [debug] Executing server operation INTEREST READ java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
> TCPSelector [debug] Setting interest (was read)
> TCPSelector [debug] Executing server operation INTEREST WRITE java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
> TCPSelector [debug] Setting interest WRITE
> TCPSelector [debug] Writing java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
> TCPSelector [debug] Ordering server operation INTEREST WRITE java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
> TCPSelector [debug] Ordering server operation INTEREST READ java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
> TCPSelector [debug] Executing server operation INTEREST WRITE java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = false
> TCPSelector [debug] Setting interest (was write)
> TCPSelector [debug] Executing server operation INTEREST READ java.nio.channels.SocketChannel[connected
> local=/127.0.0.1:2036 remote=/127.0.0.1:49682] = true
> TCPSelector [debug] Setting interest READ
> TCPSelector [debug] Reading java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49682]
> [ERROR] BufferUnderflowException
> net4j-Thread-1 [debug.lifecycle] Deactivating SSLServerConnector[127.0.0.1:49.682]
> net4j-Thread-1 [debug.lifecycle] Deactivating Channel[Control, SERVER]
> net4j-Thread-1 [debug.lifecycle] Deactivating ReceiveSerializer@33
> net4j-Thread-1 [debug.connector] Setting state DISCONNECTED (was connected) for SSLServerConnector[null:0]
> net4j-Thread-1 [debug.lifecycle] Deactivating Channel[1, SERVER, cdo]
> net4j-Thread-1 [debug.lifecycle] Deactivating ReceiveSerializer@37
> net4j-Thread-1 [debug.lifecycle] Deactivating SignalProtocol[cdo]
> java.nio.BufferUnderflowException
> at java.nio.Buffer.nextGetIndex(Buffer.java:498)
> at java.nio.DirectByteBuffer.getShort(DirectByteBuffer.java:580)
> at org.eclipse.net4j.internal.tcp.ssl.SSLBuffer.startGetting(SSLBuffer.java:84)
> at org.eclipse.net4j.internal.tcp.TCPConnector.handleRead(TCPConnector.java:220)
> at org.eclipse.net4j.internal.tcp.ssl.SSLConnector.handleRead(SSLConnector.java:70)
> at org.eclipse.net4j.internal.tcp.TCPSelector.handleSelection(TCPSelector.java:255)
> at org.eclipse.net4j.internal.tcp.TCPSelector.run(TCPSelector.java:170)
> at java.lang.Thread.run(Thread.java:722)
> [ERROR] BufferOverflowException
> java.nio.BufferOverflowException
> at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:357)
> at org.eclipse.net4j.internal.tcp.ssl.SSLBuffer.startGetting(SSLBuffer.java:79)
> at org.eclipse.net4j.internal.tcp.TCPConnector.handleRead(TCPConnector.java:220)
> at org.eclipse.net4j.internal.tcp.ssl.SSLConnector.handleRead(SSLConnector.java:76)
> at org.eclipse.net4j.internal.tcp.TCPSelector.handleSelection(TCPSelector.java:255)
> at org.eclipse.net4j.internal.tcp.TCPSelector.run(TCPSelector.java:170)
> at java.lang.Thread.run(Thread.java:722)
> net4j-Thread-1 [debug.acceptor] Removed connector SSLServerConnector[null:0]
>
>
> Any ideas anyone?
>
> Regards,
> Bernold


Re: [CDO] SSL Server [ERROR] BufferUnderflowException [message #975800 is a reply to message #973581] Thu, 08 November 2012 04:49 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Bernold,

Here's what the original developer replied to me:

For the server need to store only key store file and set key store cert
and pass phrase via the VM arguments below.

For each client need to store only trust key file and set trust key cert
and passphrase via the VM arguments below.

"-Dorg.eclipse.net4j.tcp.ssl.key" for setting key store cert file for
server (key store).
"-Dorg.eclipse.net4j.tcp.ssl.trust" for setting trust cert file for
client (trust key).
"-Dorg.eclipse.net4j.tcp.ssl.passphrase" for both client and server


Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] SSL Server [ERROR] BufferUnderflowException [message #976266 is a reply to message #975800] Thu, 08 November 2012 12:49 Go to previous messageGo to next message
Bernold Kraft is currently offline Bernold KraftFriend
Messages: 11
Registered: October 2012
Junior Member
Hi Eike,

I changed the VM arguments, but the result is the same. I don't think, that these details have any influence.

I recognized another Exception, which occures after the BufferUnderflowException:
TCPSelector [debug] Executing server operation REGISTER java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49861]
TCPSelector [debug] Registering java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49861]
TCPSelector [debug.connector] Setting state CONNECTED (was connecting) for SSLServerConnector[127.0.0.1:49.861]
TCPSelector [debug.acceptor] Added connector SSLServerConnector[127.0.0.1:49.861]
net4j-Thread-3 [debug] SSL handshake incomplete.
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
	at sun.security.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:171)
	at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
	at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
	at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
	at org.eclipse.net4j.internal.tcp.ssl.SSLEngineManager.performHandshake(SSLEngineManager.java:420)
	at org.eclipse.net4j.internal.tcp.ssl.SSLEngineManager.checkInitialHandshake(SSLEngineManager.java:139)
	at org.eclipse.net4j.internal.tcp.ssl.SSLConnector$1.run(SSLConnector.java:219)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
net4j-Thread-3 [debug] ssl cannot handshake.
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
	at sun.security.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:171)
	at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
	at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
	at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
	at org.eclipse.net4j.internal.tcp.ssl.SSLEngineManager.performHandshake(SSLEngineManager.java:420)
	at org.eclipse.net4j.internal.tcp.ssl.SSLEngineManager.checkInitialHandshake(SSLEngineManager.java:139)
	at org.eclipse.net4j.internal.tcp.ssl.SSLConnector$1.run(SSLConnector.java:219)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
TCPSelector [debug] Reading java.nio.channels.SocketChannel[connected local=/127.0.0.1:2036 remote=/127.0.0.1:49861]


It did appear sometimes during the last tests. Maybe only a subsequent exception caused by BufferUnderflowException.

I try to figure out, wether this is a kind of platform problem with win64.

Cheers,
Bernold
Re: [CDO] SSL Server [ERROR] BufferUnderflowException [message #1482089 is a reply to message #976266] Fri, 21 November 2014 13:28 Go to previous messageGo to next message
franck T is currently offline franck TFriend
Messages: 3
Registered: March 2013
Junior Member
Hi,

this post is quiet old but, I'm facing exactly the same problem (SSL acceptor) after few days of experiments :
[ERROR] BufferUnderflowException
java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Buffer.java:498)
at java.nio.DirectByteBuffer.getShort(DirectByteBuffer.java:580)
at org.eclipse.net4j.internal.tcp.ssl.SSLBuffer.startGetting(SSLBuffer.java:84)
at org.eclipse.net4j.internal.tcp.TCPConnector.handleRead(TCPConnector.java:219)


I have a look at those pages with no chance :
- bug 299871
- Bug 262875
- Bug 295989
- and www.eclipse.org/forums/index.php/t/731156/

Does anyone find a solution/configuration ?





Re: [CDO] SSL Server [ERROR] BufferUnderflowException [message #1488244 is a reply to message #1482089] Wed, 26 November 2014 12:39 Go to previous message
Laurent Le Moux is currently offline Laurent Le MouxFriend
Messages: 184
Registered: September 2011
Senior Member
Hi,

I faced the same problem a couple of months ago. Here's the general procedure I wrote down to remember what to do Wink :

On the server side :
In 'cdo-server.xml', change the acceptor type to 'ssl'.

Follow the « Security Features in Java SE » trail of the Java Tutorial to create the necessary keystore and truststore :

http://docs.oracle.com/javase/tutorial/security/toolsign/step3.html

In case, only the JRE is installed (which comes without keytool), one can use the Keytool plugin for Eclipse :

http://keytool.sourceforge.net/

Create a 'server.jks' keystore that will contain the server private key and where the public client one will be added (e.g. imported as a 'client.cer' file).

Important: Make sure the same password is used for the private key and the store as SSL Net4J connector only expects and uses one single passphrase (see JVM arguments below).

Copy the 'server.jks' in the exported product directory (I run my CDO server as a standalone exported product) and add the following JVM arguments to the 'RepositoryServer.ini':

-vmargs
-Dorg.eclipse.net4j.tcp.ssl.passphrase=mySingleServerPassword
-Dorg.eclipse.net4j.tcp.ssl.key=file:///[/absolute/path/to/]server.jks
-Dorg.eclipse.net4j.tcp.ssl.trust=file:///[/absolute/path/to/]server.jks


On the client side :
Use an SSL URI corresponding the server acceptor like : ssl://localhost:2036

Follow the same steps as on the server side to created the "opposite" 'client.jks' keystore in your exported product directory (my client is a RCP application) and add the following JVM arguments to its .ini file :

-vmargs
-Dorg.eclipse.net4j.tcp.ssl.passphrase=mySingleClientPassword
-Dorg.eclipse.net4j.tcp.ssl.trust=file:///[/absolute/path/to/]client.jks
-Dorg.eclipse.net4j.tcp.ssl.key=file:///[/absolute/path/to/]client.jks


Hope it helps.

Regards,

Laurent
Previous Topic:[XCORE]
Next Topic:[Xcore]
Goto Forum:
  


Current Time: Tue Apr 16 18:19:19 GMT 2024

Powered by FUDForum. Page generated in 0.99688 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top