Author: markt
Date: Thu May  7 08:18:11 2015
New Revision: 1678142

URL: http://svn.apache.org/r1678142
Log:
Move the remaining Host specific ssl settings (sessionCacheSize and 
sessionTiemout) to SSLHostConfig

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java
    tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
    tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
    tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
    tomcat/trunk/test/org/apache/tomcat/util/net/TestCustomSsl.java
    tomcat/trunk/test/org/apache/tomcat/util/net/jsse/TesterBug50640SslImpl.java
    tomcat/trunk/webapps/docs/config/http.xml

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java 
Thu May  7 08:18:11 2015
@@ -25,12 +25,6 @@ public abstract class AbstractHttp11Jsse
         super(endpoint);
     }
 
-    public void setSessionCacheSize(String 
s){getEndpoint().setSessionCacheSize(s);}
-    public String getSessionCacheSize(){ return 
getEndpoint().getSessionCacheSize();}
-
-    public void setSessionTimeout(String 
s){getEndpoint().setSessionTimeout(s);}
-    public String getSessionTimeout(){ return 
getEndpoint().getSessionTimeout();}
-
     public String getSslImplementationName() { return 
getEndpoint().getSslImplementationName(); }
     public void setSslImplementationName(String s) { 
getEndpoint().setSslImplementationName(s); }
 }

Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Thu 
May  7 08:18:11 2015
@@ -512,6 +512,18 @@ public abstract class AbstractHttp11Prot
     }
 
 
+    public void setSessionCacheSize(int sessionCacheSize){
+        registerDefaultSSLHostConfig();
+        defaultSSLHostConfig.setSessionCacheSize(sessionCacheSize);
+    }
+
+
+    public void setSessionTimeout(int sessionTimeout){
+        registerDefaultSSLHostConfig();
+        defaultSSLHostConfig.setSessionTimeout(sessionTimeout);
+    }
+
+
     // ------------------------------------------------------------- Common 
code
 
     // Common configuration required for all new HTTP11 processors

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Thu May  
7 08:18:11 2015
@@ -963,14 +963,6 @@ public abstract class AbstractEndpoint<S
         this.sslImplementationName = s;
     }
 
-    private String sessionCacheSize = null;
-    public String getSessionCacheSize() { return sessionCacheSize;}
-    public void setSessionCacheSize(String s) { sessionCacheSize = s;}
-
-    private String sessionTimeout = "86400";
-    public String getSessionTimeout() { return sessionTimeout;}
-    public void setSessionTimeout(String s) { sessionTimeout = s;}
-
 
     protected final Set<SocketWrapperBase<S>> waitingRequests = Collections
             .newSetFromMap(new ConcurrentHashMap<SocketWrapperBase<S>, 
Boolean>());

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java Thu 
May  7 08:18:11 2015
@@ -46,22 +46,13 @@ public abstract class AbstractJsseEndpoi
         if (isSSLEnabled()) {
             sslImplementation = 
SSLImplementation.getInstance(getSslImplementationName());
 
-            // TODO: Temp code until config refactoring is complete. Remove 
once
-            //       refactoring is complete.
-            if (sslHostConfigs.size() == 0) {
-                SSLHostConfig defaultSslHostConfig = new SSLHostConfig();
-                
defaultSslHostConfig.setHostName(SSLHostConfig.DEFAULT_SSL_HOST_NAME);
-                sslHostConfigs.put(SSLHostConfig.DEFAULT_SSL_HOST_NAME, 
defaultSslHostConfig);
-            }
-
             for (SSLHostConfig sslHostConfig : sslHostConfigs.values()) {
-                SSLUtil sslUtil = sslImplementation.getSSLUtil(this, 
sslHostConfig);
+                SSLUtil sslUtil = sslImplementation.getSSLUtil(sslHostConfig);
                 SSLContext sslContext = sslUtil.createSSLContext();
                 sslContext.init(wrap(sslUtil.getKeyManagers(), sslHostConfig),
                         sslUtil.getTrustManagers(), null);
 
-                SSLSessionContext sessionContext =
-                    sslContext.getServerSessionContext();
+                SSLSessionContext sessionContext = 
sslContext.getServerSessionContext();
                 if (sessionContext != null) {
                     sslUtil.configureSessionContext(sessionContext);
                 }

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java Thu May  7 
08:18:11 2015
@@ -64,6 +64,8 @@ public class SSLHostConfig {
     private String certificateKeystoreProvider = 
System.getProperty("javax.net.ssl.keyStoreProvider");
     private String certificateKeystoreType = 
System.getProperty("javax.net.ssl.keyStoreType");
     private String keyManagerAlgorithm = 
KeyManagerFactory.getDefaultAlgorithm();
+    private int sessionCacheSize = 0;
+    private int sessionTimeout = 86400;
     private String sslProtocol = "TLS";
     private String trustManagerClassName;
     private String truststoreAlgorithm = 
TrustManagerFactory.getDefaultAlgorithm();
@@ -316,6 +318,28 @@ public class SSLHostConfig {
     }
 
 
+    public void setSessionCacheSize(int sessionCacheSize) {
+        setProperty("sessionCacheSize", Type.JSSE);
+        this.sessionCacheSize = sessionCacheSize;
+    }
+
+
+    public int getSessionCacheSize() {
+        return sessionCacheSize;
+    }
+
+
+    public void setSessionTimeout(int sessionTimeout) {
+        setProperty("sessionTimeout", Type.JSSE);
+        this.sessionTimeout = sessionTimeout;
+    }
+
+
+    public int getSessionTimeout() {
+        return sessionTimeout;
+    }
+
+
     public void setSslProtocol(String sslProtocol) {
         setProperty("sslProtocol", Type.JSSE);
         this.sslProtocol = sslProtocol;

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java Thu May 
 7 08:18:11 2015
@@ -71,5 +71,5 @@ public abstract class SSLImplementation
 
     public abstract SSLSupport getSSLSupport(SSLSession session);
 
-    public abstract SSLUtil getSSLUtil(AbstractEndpoint<?> ep, SSLHostConfig 
sslHostConfig);
+    public abstract SSLUtil getSSLUtil(SSLHostConfig sslHostConfig);
 }

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java 
Thu May  7 08:18:11 2015
@@ -18,7 +18,6 @@ package org.apache.tomcat.util.net.jsse;
 
 import javax.net.ssl.SSLSession;
 
-import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.SSLHostConfig;
 import org.apache.tomcat.util.net.SSLImplementation;
 import org.apache.tomcat.util.net.SSLSupport;
@@ -51,7 +50,7 @@ public class JSSEImplementation extends
     }
 
     @Override
-    public SSLUtil getSSLUtil(AbstractEndpoint<?> endpoint, SSLHostConfig 
sslHostConfig) {
-        return new JSSESocketFactory(endpoint, sslHostConfig);
+    public SSLUtil getSSLUtil(SSLHostConfig sslHostConfig) {
+        return new JSSESocketFactory(sslHostConfig);
     }
 }

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=1678142&r1=1678141&r2=1678142&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 
Thu May  7 08:18:11 2015
@@ -14,7 +14,6 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
 package org.apache.tomcat.util.net.jsse;
 
 import java.io.File;
@@ -55,8 +54,6 @@ import javax.net.ssl.X509KeyManager;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.net.AbstractEndpoint;
-import org.apache.tomcat.util.net.Constants;
 import org.apache.tomcat.util.net.SSLContext;
 import org.apache.tomcat.util.net.SSLHostConfig;
 import org.apache.tomcat.util.net.SSLUtil;
@@ -81,17 +78,12 @@ public class JSSESocketFactory implement
     private static final StringManager sm =
         StringManager.getManager("org.apache.tomcat.util.net.jsse.res");
 
-    private static final int defaultSessionCacheSize = 0;
-    private static final int defaultSessionTimeout = 86400;
-
-    private final AbstractEndpoint<?> endpoint;
     private final SSLHostConfig sslHostConfig;
 
     private final String[] defaultServerProtocols;
 
 
-    public JSSESocketFactory (AbstractEndpoint<?> endpoint, SSLHostConfig 
sslHostConfig) {
-        this.endpoint = endpoint;
+    public JSSESocketFactory (SSLHostConfig sslHostConfig) {
         this.sslHostConfig = sslHostConfig;
 
         SSLContext context;
@@ -115,7 +107,7 @@ public class JSSESocketFactory implement
             // the JSSE implementation just doesn't like creating unbound
             // sockets so allow the code to proceed.
             defaultServerProtocols = new String[0];
-            log.warn(sm.getString("jsse.noDefaultProtocols", 
endpoint.getName()));
+            log.warn(sm.getString("jsse.noDefaultProtocols", 
sslHostConfig.getHostName()));
             return;
         }
 
@@ -126,17 +118,15 @@ public class JSSESocketFactory implement
             List<String> filteredProtocols = new ArrayList<>();
             for (String protocol : socket.getEnabledProtocols()) {
                 if (protocol.toUpperCase(Locale.ENGLISH).contains("SSL")) {
-                    log.debug(sm.getString("jsse.excludeDefaultProtocol",
-                            protocol));
+                    log.debug(sm.getString("jsse.excludeDefaultProtocol", 
protocol));
                     continue;
                 }
                 filteredProtocols.add(protocol);
             }
-            defaultServerProtocols = filteredProtocols
-                    .toArray(new String[filteredProtocols.size()]);
+            defaultServerProtocols =
+                    filteredProtocols.toArray(new 
String[filteredProtocols.size()]);
             if (defaultServerProtocols.length == 0) {
-                log.warn(sm.getString("jsse.noDefaultProtocols",
-                        endpoint.getName()));
+                log.warn(sm.getString("jsse.noDefaultProtocols", 
sslHostConfig.getHostName()));
             }
         } finally {
             try {
@@ -287,8 +277,7 @@ public class JSSESocketFactory implement
 
         KeyStore ks = getStore(keystoreType, keystoreProvider, keystoreFile, 
keystorePass);
         if (keyAlias != null && !ks.isKeyEntry(keyAlias)) {
-            throw new IOException(
-                    sm.getString("jsse.alias_no_key_entry", keyAlias));
+            throw new IOException(sm.getString("jsse.alias_no_key_entry", 
keyAlias));
         }
 
         KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm);
@@ -350,23 +339,8 @@ public class JSSESocketFactory implement
 
     @Override
     public void configureSessionContext(SSLSessionContext sslSessionContext) {
-        int sessionCacheSize;
-        if (endpoint.getSessionCacheSize() != null) {
-            sessionCacheSize = Integer.parseInt(
-                    endpoint.getSessionCacheSize());
-        } else {
-            sessionCacheSize = defaultSessionCacheSize;
-        }
-
-        int sessionTimeout;
-        if (endpoint.getSessionTimeout() != null) {
-            sessionTimeout = Integer.parseInt(endpoint.getSessionTimeout());
-        } else {
-            sessionTimeout = defaultSessionTimeout;
-        }
-
-        sslSessionContext.setSessionCacheSize(sessionCacheSize);
-        sslSessionContext.setSessionTimeout(sessionTimeout);
+        
sslSessionContext.setSessionCacheSize(sslHostConfig.getSessionCacheSize());
+        sslSessionContext.setSessionTimeout(sslHostConfig.getSessionTimeout());
     }
 
 
@@ -406,10 +380,6 @@ public class JSSESocketFactory implement
         throws IOException, CRLException, CertificateException {
 
         File crlFile = new File(crlf);
-        if( !crlFile.isAbsolute() ) {
-            crlFile = new File(
-                    System.getProperty(Constants.CATALINA_BASE_PROP), crlf);
-        }
         Collection<? extends CRL> crls = null;
         try {
             CertificateFactory cf = CertificateFactory.getInstance("X.509");

Modified: tomcat/trunk/test/org/apache/tomcat/util/net/TestCustomSsl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/TestCustomSsl.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/net/TestCustomSsl.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/net/TestCustomSsl.java Thu May  7 
08:18:11 2015
@@ -58,6 +58,9 @@ public class TestCustomSsl extends Tomca
 
         connector.setProperty("sslImplementationName",
                 "org.apache.tomcat.util.net.jsse.TesterBug50640SslImpl");
+
+        // This setting will break ssl configuration unless the custom
+        // implementation is used.
         connector.setProperty(TesterBug50640SslImpl.PROPERTY_NAME,
                 TesterBug50640SslImpl.PROPERTY_VALUE);
 

Modified: 
tomcat/trunk/test/org/apache/tomcat/util/net/jsse/TesterBug50640SslImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/jsse/TesterBug50640SslImpl.java?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- 
tomcat/trunk/test/org/apache/tomcat/util/net/jsse/TesterBug50640SslImpl.java 
(original)
+++ 
tomcat/trunk/test/org/apache/tomcat/util/net/jsse/TesterBug50640SslImpl.java 
Thu May  7 08:18:11 2015
@@ -16,21 +16,21 @@
  */
 package org.apache.tomcat.util.net.jsse;
 
-import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.SSLHostConfig;
 import org.apache.tomcat.util.net.SSLUtil;
 
 public class TesterBug50640SslImpl extends JSSEImplementation {
 
-    public static final String PROPERTY_NAME = "bug50640";
-    public static final String PROPERTY_VALUE = "pass";
+    public static final String PROPERTY_NAME = "sslEnabledProtocols";
+    public static final String PROPERTY_VALUE = "magic";
 
 
     @Override
-    public SSLUtil getSSLUtil(AbstractEndpoint<?> endpoint, SSLHostConfig 
sslHostConfig) {
-        String flag = endpoint.getProperty(PROPERTY_NAME);
-        if (PROPERTY_VALUE.equals(flag)) {
-            return super.getSSLUtil(endpoint, sslHostConfig);
+    public SSLUtil getSSLUtil(SSLHostConfig sslHostConfig) {
+        if (sslHostConfig.getProtocols().size() == 1 &&
+                sslHostConfig.getProtocols().contains(PROPERTY_VALUE)) {
+            sslHostConfig.setProtocols("TLSv1,TLSv1.1,TLSv1.2");
+            return super.getSSLUtil(sslHostConfig);
         } else {
             return null;
         }

Modified: tomcat/trunk/webapps/docs/config/http.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1678142&r1=1678141&r2=1678142&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/http.xml (original)
+++ tomcat/trunk/webapps/docs/config/http.xml Thu May  7 08:18:11 2015
@@ -1197,6 +1197,20 @@
       used.</p>
     </attribute>
 
+    <attribute name="sessionCacheSize" required="false">
+      <p>JSSE only.</p>
+      <p>The number of SSL sessions to maintain in the session cache. Use 0 to
+      specify an unlimited cache size. If not specified, a default of 0 is
+      used.</p>
+    </attribute>
+
+    <attribute name="sessionTimeout" required="false">
+      <p>JSSE only.</p>
+      <p>The time, in seconds, after the creation of an SSL session that it 
will
+      timeout. Use 0 to specify an unlimited timeout. If not specified, a
+      default of 86400 (24 hours) is used.</p>
+    </attribute>
+
     <attribute name="sslProtocol" required="false">
       <p>JSSE only.</p>
       <p>The the SSL protocol(s) to use (a single value may enable multiple
@@ -1336,15 +1350,15 @@
     </attribute>
 
     <attribute name="sessionCacheSize" required="false">
-      <p>The number of SSL sessions to maintain in the session cache. Use 0 to
-      specify an unlimited cache size. If not specified, a default of 0 is
-      used.</p>
+      <p>This is an alias for the <code>sessionCacheSize</code> attribute of 
the
+      default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a>
+      element.</p>
     </attribute>
 
     <attribute name="sessionTimeout" required="false">
-      <p>The time, in seconds, after the creation of an SSL session that it 
will
-      timeout. Use 0 to specify an unlimited timeout. If not specified, a
-      default of 86400 (24 hours) is used.</p>
+      <p>This is an alias for the <code>sessionTimeout</code> attribute of the
+      default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a>
+      element.</p>
     </attribute>
 
     <attribute name="sslEnabledProtocols" required="false">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to