Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 62257 invoked from network); 25 Aug 2008 15:37:31 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 25 Aug 2008 15:37:31 -0000 Received: (qmail 31268 invoked by uid 500); 25 Aug 2008 15:37:27 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 31208 invoked by uid 500); 25 Aug 2008 15:37:27 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 31197 invoked by uid 99); 25 Aug 2008 15:37:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Aug 2008 08:37:27 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [72.22.94.67] (HELO virtual.halosg.com) (72.22.94.67) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Aug 2008 15:36:29 +0000 Received: (qmail 5148 invoked from network); 25 Aug 2008 10:36:58 -0500 Received: from sfwv.statefarm.com (HELO ?10.35.237.70?) (205.242.229.80) by halosg.com with SMTP; 25 Aug 2008 10:36:58 -0500 Message-ID: <48B2D184.6020602@hanik.com> Date: Mon, 25 Aug 2008 10:36:36 -0500 From: Filip Hanik - Dev Lists User-Agent: Thunderbird 2.0.0.16 (Windows/20080708) MIME-Version: 1.0 To: Tomcat Developers List Subject: Re: svn commit: r687503 - in /tomcat/trunk/java/org/apache/tomcat/util/net/jsse: JSSESocketFactory.java res/LocalStrings.properties References: <20080820232042.AB85223889BA@eris.apache.org> In-Reply-To: <20080820232042.AB85223889BA@eris.apache.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org + socket.setSoTimeout(1); does this ever get reset? In JioEndpoint.java I see //if( serverTimeout >= 0 ) // serverSocket.setSoTimeout( serverTimeout ); It's commented out and I have a hard time finding where it would be set to a more normal value, instead of 1 millisecond for the server socket Filip markt@apache.org wrote: > Author: markt > Date: Wed Aug 20 16:20:42 2008 > New Revision: 687503 > > URL: http://svn.apache.org/viewvc?rev=687503&view=rev > Log: > Improved fix for 45528 (invalid SSL config). > It is a variation on the previous patch that: > - does the check earlier > - uses an unbound socket so there is no possibility of a client connection > - uses the String manager for the error message > Note: I gave up on the alterntaive javax.crypto.Cipher suggestion as the cipher names are different and there is no easy conversion. > > Modified: > tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java > tomcat/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties > > Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java > URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java?rev=687503&r1=687502&r2=687503&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java Wed Aug 20 16:20:42 2008 > @@ -26,6 +26,7 @@ > import java.net.ServerSocket; > import java.net.Socket; > import java.net.SocketException; > +import java.net.SocketTimeoutException; > import java.security.KeyStore; > import java.security.SecureRandom; > import java.security.cert.CRL; > @@ -428,6 +429,9 @@ > getEnabledCiphers(requestedCiphers, > sslProxy.getSupportedCipherSuites()); > > + // Check the SSL config is OK > + checkConfig(); > + > } catch(Exception e) { > if( e instanceof IOException ) > throw (IOException)e; > @@ -692,7 +696,7 @@ > * Configures the given SSL server socket with the requested cipher suites, > * protocol versions, and need for client authentication > */ > - private void initServerSocket(ServerSocket ssocket) { > + private void initServerSocket(ServerSocket ssocket) throws IOException { > > SSLServerSocket socket = (SSLServerSocket) ssocket; > > @@ -709,4 +713,33 @@ > configureClientAuth(socket); > } > > + /** > + * Checks that the cetificate is compatible with the enabled cipher suites. > + * If we don't check now, the JIoEndpoint can enter a nasty logging loop. > + * See bug 45528. > + */ > + private void checkConfig() throws IOException { > + // Create an unbound server socket > + ServerSocket socket = sslProxy.createServerSocket(); > + initServerSocket(socket); > + > + // Set the timeout to 1ms as all we care about is if it throws an > + // exception on accept. > + socket.setSoTimeout(1); > + try { > + socket.accept(); > + // Will never get here - no client can connect to an unbound port > + } catch (SSLException ssle) { > + // SSL configuration is invalid. Possibly cert doesn't match ciphers > + IOException ioe = new IOException(sm.getString( > + "jsse.invalid_ssl_conf", ssle.getMessage())); > + ioe.initCause(ssle); > + throw ioe; > + } catch (SocketTimeoutException ste) { > + // Expected if all is well - do nothing > + } finally { > + socket.close(); > + } > + > + } > } > > Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties > URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties?rev=687503&r1=687502&r2=687503&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties Wed Aug 20 16:20:42 2008 > @@ -15,3 +15,4 @@ > > jsse.alias_no_key_entry=Alias name {0} does not identify a key entry > jsse.keystore_load_failed=Failed to load keystore type {0} with path {1} due to {2} > +jsse.invalid_ssl_conf=SSL configuration is invalid due to {0} > \ No newline at end of file > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org > For additional commands, e-mail: dev-help@tomcat.apache.org > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org