[openssl-users] OpenSSL performance issue

Dave Thompson dthompson at prinpay.com
Fri Dec 19 10:50:25 UTC 2014


> From: openssl-users On Behalf Of Kurt Roeckx
> Sent: Thursday, December 18, 2014 16:36

> On Fri, Dec 19, 2014 at 02:30:07AM +0530, Prabhat Puroshottam wrote:
> > ***************************************
> > This is for *Client -> Agent*
> > ***************************************
> [...]
> >         Version 3.1
> [...]
> >         cipherSuite         TLS_RSA_WITH_AES_256_CBC_SHA
> [...]
> > ***************************************
> > This is for *Client -> Proxy Server*
> > ***************************************
> >         cipherSuite         TLS_DHE_RSA_WITH_AES_256_CBC_SHA
> 
> So the differnce here is that jave picks a DHE ciphersuite while
> otherwise you didn't.  DHE gives you forward secrecy but is
> slower.
> 
Good catch, I missed that. But, it shouldn't be many *seconds* 
unless this is very poor hardware. Especially since Java 7 
(and IIRC 6) uses, as you can see later in the trace, 768 bits.
(Except export suites use 512 per RFC. Java 8 defaults DHE 
to 1024 and offers some new options for better.)

Although that reminds me, on the *first* session in a process, 
there might be delay to initialize SecureRandom, depending on 
the platform and options/environment. But not for all sessions.

To OP: assuming this delay happens on non-initial sessions 
more than rarely, can you try putting jconsole or the newer 
(but more complicated) "Java Mission Control" tools on 
the JVM running the proxy server while driving it with 
as many requests as you can, to get some (rough) idea 
what's going on: is it CPU bound? which threads? if you can 
capture stacks, which methods? Is it swapping?

One other thought: normally JSSE server uses a key manager 
that is preloaded from a JKS. Are you using an unusual 
key manager like a PKCS#11 "token", or even a custom one 
that does something costly like fetching from LDAP?

> You're also not using session resumption which might speed up the
> whole process.  It at least looks like that proxy server might
> support that.
> 
I assumed OP's traces are the first session. Besides OpenSSL 
client doesn't cache by default; you must code to enable it.

> You also seem to be using an old version of openssl that only
> supports TLSv1, I suggest you upgrade.
> 
Good in general, but very unlikely to change JSSE-server performance.




More information about the openssl-users mailing list