Chris,

> -----Original Message-----
> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Sent: Monday, January 08, 2018 8:16 PM
> To: users@tomcat.apache.org
> Subject: Re: Why will Tomcat not accept EC cipher suites?
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> John,
> 
> On 1/8/18 6:28 PM, john.e.gr...@wellsfargo.com.INVALID wrote:
> > Chris and Mark,
> >> -----Original Message----- From: Christopher Schultz
> >> [mailto:ch...@christopherschultz.net] Sent: Monday, January 08,
> >> 2018 5:21 PM To: users@tomcat.apache.org Subject: Re: Why will Tomcat
> >> not accept EC cipher suites?
> >>
> >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
> >>
> >> Mark,
> >>
> >> On 1/8/18 3:36 PM, Mark Thomas wrote:
> >>> On 08/01/18 19:34, john.e.gr...@wellsfargo.com.INVALID wrote:
> >>>> All,
> >>>>
> >>>> I'm using Tomcat 7.0.82 and java 1.8.0_152.
> >>>>
> >>>> I cannot get Tomcat to accept elliptic curve ciphers.  I've written
> >>>> a small SSL socket server that uses the same certificate as the
> >>>> server and deployed it on the same machine using the same JDK.  It
> >>>> accepts EC ciphers just fine so I don't think there is anything in
> >>>> the JDK that has disabled them, etc.  With verbose SSL enabled,
> >>>> Tomcat, however, complains about "http-bio-7114-exec-4, handling
> >>>> exception:
> >>>> javax.net.ssl.SSLHandshakeException: no cipher suites in common."
> >>>>
> >>>> If I omit the "ciphers" property of the connector, I get
> >>>> this:
> >>>>
> >>>> No available cipher suite for TLSv1 No available cipher suite for
> >>>> TLSv1.1 No available cipher suite for TLSv1.2
> >>>>
> >>>> If I set ciphers="ALL,"  I'm back to "no cipher suites in common."
> >>>>
> >>>> If I explicitly tell Tomcat to accept
> >>>> TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, which works with my
> >> socket
> >>>> server, I get "No appropriate protocol (protocol is disabled or
> >>>> cipher suites are inappropriate)."
> >>>>
> >>>> BTW I have an RSA cert on the server with a 2048-bit key and signed
> >>>> using SHA256withRSA.
> >>>>
> >>>> One of the connector configs I've tried.
> >>>>
> >>>> <Connector port="7114" protocol="HTTP/1.1" SSLEnabled="true"
> >>>> maxThreads="400" maxKeepAliveRequests="100"
> >>>> keepAliveTimeout="10000" scheme="https" secure="true"
> >>>> clientAuth="true" sessionCacheSize="5" sslProtocol="TLS"
> >>>> keystoreFile="/path/to/keystore"
> >>>> keystorePass="${keystore.password}" keyAlias="test"
> >>>> truststoreFile="/path/to/cacerts"
> >>>> truststorePass="${truststore.password}"
> >>>> allowUnsafeLegacyRenegotiation="false" />
> >>>
> >>> Try getting it to work without client authentication to start with.
> >>
> >> +1
> >>
> >>> I don't see anything that jumps out as wrong in the above.
> >>
> >> Also, John, what client are you using to test?
> >>
> >> - -chris
> >
> > At Mark's suggestion, I disabled client auth, but it didn't make any
> > difference.  The handshake fails before it even gets to that step.
> >
> > I'm using several different clients, including HP Performance Center,
> > openssl, and a couple of java clients that I wrote myself (one uses
> > SSLSocket directly and one uses HttpsUrlConnection.)
> >
> > Currently I'm looking at the JDK's ServerHandshaker class to make sure
> > I understand the log messages.
> 
> Are you doing something mundane such as:
> 
> $ openssl s_client -connect example.com:8443 ?
> 
> I would expect that to be able to negotiate a TLS connection with a pretty
> standard Tomcat with TLS enabled (and nothing in particular specified for
> ciphers, protocols, etc.).
> 
> - -chris

It turns out that we have elliptic curve ciphers explicitly disabled with the 
system property -Dcom.sun.net.ssl.enableECC=false.  I know the OWASP cheat 
sheet says to favor DHE over ECDHE but I'll have to ask around to find out if 
that's the reason.

Thanks


Reply via email to