Author: markt
Date: Tue May  5 19:48:53 2015
New Revision: 1677884

URL: http://svn.apache.org/r1677884
Log:
Move alias, keystoreType and keystoreProvider 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/jsse/JSSESocketFactory.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=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java 
Tue May  5 19:48:53 2015
@@ -25,22 +25,9 @@ public abstract class AbstractHttp11Jsse
         super(endpoint);
     }
 
-    public String getKeystoreType() { return getEndpoint().getKeystoreType();}
-    public void setKeystoreType(String s ) { getEndpoint().setKeystoreType(s);}
-
-    public String getKeystoreProvider() {
-        return getEndpoint().getKeystoreProvider();
-    }
-    public void setKeystoreProvider(String s ) {
-        getEndpoint().setKeystoreProvider(s);
-    }
-
     public String getSslProtocol() { return getEndpoint().getSslProtocol();}
     public void setSslProtocol(String s) { getEndpoint().setSslProtocol(s);}
 
-    public String getKeyAlias() { return getEndpoint().getKeyAlias();}
-    public void setKeyAlias(String s ) { getEndpoint().setKeyAlias(s);}
-
     public void setTruststoreFile(String f){ 
getEndpoint().setTruststoreFile(f);}
     public String getTruststoreFile(){ return 
getEndpoint().getTruststoreFile();}
 

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=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Tue 
May  5 19:48:53 2015
@@ -459,6 +459,24 @@ public abstract class AbstractHttp11Prot
     }
 
 
+    public void setKeystoreType(String certificateKeystoreType) {
+        registerDefaultSSLHostConfig();
+        
defaultSSLHostConfig.setCertificateKeystoreType(certificateKeystoreType);
+    }
+
+
+    public void setKeystoreProvider(String certificateKeystoreProvider) {
+        registerDefaultSSLHostConfig();
+        
defaultSSLHostConfig.setCertificateKeystoreProvider(certificateKeystoreProvider);
+    }
+
+
+    public void setKeyAlias(String certificateKeyAlias) {
+        registerDefaultSSLHostConfig();
+        defaultSSLHostConfig.setCertificateKeyAlias(certificateKeyAlias);
+    }
+
+
     // ------------------------------------------------------------- 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=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Tue May  
5 19:48:53 2015
@@ -982,22 +982,10 @@ public abstract class AbstractEndpoint<S
         this.sslImplementationName = s;
     }
 
-    private String keystoreType = "JKS";
-    public String getKeystoreType() { return keystoreType;}
-    public void setKeystoreType(String s ) { this.keystoreType = s;}
-
-    private String keystoreProvider = null;
-    public String getKeystoreProvider() { return keystoreProvider;}
-    public void setKeystoreProvider(String s ) { this.keystoreProvider = s;}
-
     private String sslProtocol = "TLS";
     public String getSslProtocol() { return sslProtocol;}
     public void setSslProtocol(String s) { sslProtocol = s;}
 
-    private String keyAlias = null;
-    public String getKeyAlias() { return keyAlias;}
-    public void setKeyAlias(String s ) { keyAlias = s;}
-
     private String truststoreFile = 
System.getProperty("javax.net.ssl.trustStore");
     public String getTruststoreFile() {return truststoreFile;}
     public void setTruststoreFile(String s) {

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=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java Tue 
May  5 19:48:53 2015
@@ -57,7 +57,7 @@ public abstract class AbstractJsseEndpoi
             for (SSLHostConfig sslHostConfig : sslHostConfigs.values()) {
                 SSLUtil sslUtil = sslImplementation.getSSLUtil(this, 
sslHostConfig);
                 SSLContext sslContext = sslUtil.createSSLContext();
-                sslContext.init(wrap(sslUtil.getKeyManagers()),
+                sslContext.init(wrap(sslUtil.getKeyManagers(), sslHostConfig),
                         sslUtil.getTrustManagers(), null);
 
                 SSLSessionContext sessionContext =
@@ -115,14 +115,15 @@ public abstract class AbstractJsseEndpoi
     }
 
 
-    private KeyManager[] wrap(KeyManager[] managers) {
+    private KeyManager[] wrap(KeyManager[] managers, SSLHostConfig 
sslHostConfig) {
         if (managers==null) return null;
         KeyManager[] result = new KeyManager[managers.length];
         for (int i=0; i<result.length; i++) {
-            if (managers[i] instanceof X509KeyManager && getKeyAlias() != 
null) {
-                String keyAlias = getKeyAlias();
+            if (managers[i] instanceof X509KeyManager &&
+                    sslHostConfig.getCertificateKeyAlias() != null) {
+                String keyAlias = sslHostConfig.getCertificateKeyAlias();
                 // JKS keystores always convert the alias name to lower case
-                if ("jks".equalsIgnoreCase(getKeystoreType())) {
+                if 
("jks".equalsIgnoreCase(sslHostConfig.getCertificateKeystoreType())) {
                     keyAlias = keyAlias.toLowerCase(Locale.ENGLISH);
                 }
                 result[i] = new NioX509KeyManager((X509KeyManager) 
managers[i], keyAlias);

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=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLHostConfig.java Tue May  5 
19:48:53 2015
@@ -53,8 +53,11 @@ public class SSLHostConfig {
     private Set<String> protocols = new HashSet<>();
     private String certificateRevocationListFile;
     // JSSE
+    private String certificateKeyAlias;
     private String certificateKeystorePassword = "changeit";
     private String certificateKeystoreFile = 
System.getProperty("user.home")+"/.keystore";
+    private String certificateKeystoreProvider;
+    private String certificateKeystoreType = "JKS";
     private String keyManagerAlgorithm = 
KeyManagerFactory.getDefaultAlgorithm();
     // OpenSSL
     private String certificateFile;
@@ -230,13 +233,14 @@ public class SSLHostConfig {
 
     // ---------------------------------- JSSE specific configuration 
properties
 
-    public void setCertificateKeystorePassword(String 
certificateKeystorePassword) {
-        this.certificateKeystorePassword = certificateKeystorePassword;
+    public void setCertificateKeyAlias(String certificateKeyAlias) {
+        setProperty("certificateKeyAlias", Type.JSSE);
+        this.certificateKeyAlias = certificateKeyAlias;
     }
 
 
-    public String getCertificateKeystorePassword() {
-        return certificateKeystorePassword;
+    public String getCertificateKeyAlias() {
+        return certificateKeyAlias;
     }
 
 
@@ -251,6 +255,39 @@ public class SSLHostConfig {
     }
 
 
+    public void setCertificateKeystorePassword(String 
certificateKeystorePassword) {
+        setProperty("certificateKeystorePassword", Type.JSSE);
+        this.certificateKeystorePassword = certificateKeystorePassword;
+    }
+
+
+    public String getCertificateKeystorePassword() {
+        return certificateKeystorePassword;
+    }
+
+
+    public void setCertificateKeystoreProvider(String 
certificateKeystoreProvider) {
+        setProperty("certificateKeystoreProvider", Type.JSSE);
+        this.certificateKeystoreProvider = certificateKeystoreProvider;
+    }
+
+
+    public String getCertificateKeystoreProvider() {
+        return certificateKeystoreProvider;
+    }
+
+
+    public void setCertificateKeystoreType(String certificateKeystoreType) {
+        setProperty("certificateKeystoreType", Type.JSSE);
+        this.certificateKeystoreType = certificateKeystoreType;
+    }
+
+
+    public String getCertificateKeystoreType() {
+        return certificateKeystoreType;
+    }
+
+
     public void setKeyManagerAlgorithm(String keyManagerAlgorithm) {
         setProperty("keyManagerAlgorithm", Type.JSSE);
         this.keyManagerAlgorithm = keyManagerAlgorithm;

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=1677884&r1=1677883&r2=1677884&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 
Tue May  5 19:48:53 2015
@@ -337,13 +337,14 @@ public class JSSESocketFactory implement
 
     @Override
     public KeyManager[] getKeyManagers() throws Exception {
-        String keystoreType = endpoint.getKeystoreType();
+        String keystoreType = sslHostConfig.getCertificateKeystoreType();
         if (keystoreType == null) {
             keystoreType = defaultKeystoreType;
         }
 
-        return getKeyManagers(keystoreType, endpoint.getKeystoreProvider(),
-                sslHostConfig.getKeyManagerAlgorithm(), 
endpoint.getKeyAlias());
+        return getKeyManagers(keystoreType, 
sslHostConfig.getCertificateKeystoreProvider(),
+                sslHostConfig.getKeyManagerAlgorithm(),
+                sslHostConfig.getCertificateKeyAlias());
     }
 
     @Override
@@ -353,7 +354,7 @@ public class JSSESocketFactory implement
             truststoreType = 
System.getProperty("javax.net.ssl.trustStoreType");
         }
         if (truststoreType == null) {
-            truststoreType = endpoint.getKeystoreType();
+            truststoreType = sslHostConfig.getCertificateKeystoreType();
         }
         if (truststoreType == null) {
             truststoreType = defaultKeystoreType;
@@ -364,7 +365,7 @@ public class JSSESocketFactory implement
             algorithm = TrustManagerFactory.getDefaultAlgorithm();
         }
 
-        return getTrustManagers(truststoreType, endpoint.getKeystoreProvider(),
+        return getTrustManagers(truststoreType, 
sslHostConfig.getCertificateKeystoreProvider(),
                 algorithm);
     }
 

Modified: tomcat/trunk/webapps/docs/config/http.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1677884&r1=1677883&r2=1677884&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/http.xml (original)
+++ tomcat/trunk/webapps/docs/config/http.xml Tue May  5 19:48:53 2015
@@ -1037,6 +1037,17 @@
       PEM-encoded.</p>
     </attribute>
 
+    <attribute name="certificateKeyAlias" required="true">
+      <p>JSSE only.</p>
+      <p>The alias used for the server key and certificate in the keystore. If
+      not specified, the first key read from the keystore will be used. The
+      order in which keys are read from the keystore is implementation
+      dependent. It may not be the case that keys are read from the keystore in
+      the same order as they were added. If more than one key is present in the
+      kesytore it is strongly recommended that a keyAlias is configured to
+      ensure that the correct key is used.</p>
+    </attribute>
+
     <attribute name="certificateKeyFile" required="false">
       <p>OpenSSL only.</p>
       <p>Name of the file that contains the server private key. The format is
@@ -1045,6 +1056,14 @@
       RECOMMENDED).</p>
     </attribute>
 
+    <attribute name="certificateKeyPassword" required="false">
+      <p>The password used to access the private key associated with the server
+      certificate from the specified file.</p>
+      <p>If not specified, the default behaviour for JSSE is to use the
+      <strong>certificateKeystorePassword</strong>. For OpenSSL the default
+      behaviour is not to use a password.</p>
+    </attribute>
+
     <attribute name="certificateKeystoreFile" required="false">
       <p>JSSE only.</p>
       <p>The pathname of the keystore file where you have stored the server
@@ -1061,12 +1080,19 @@
       <code>changeit</code> will be used.</p>
     </attribute>
 
-    <attribute name="certificateKeyPassword" required="false">
-      <p>The password used to access the private key associated with the server
-      certificate from the specified file.</p>
-      <p>If not specified, the default behaviour for JSSE is to use the
-      <strong>certificateKeystorePassword</strong>. For OpenSSL the default
-      behaviour is not to use a password.</p>
+    <attribute name="certificateKeystoreProvider" required="true">
+      <p>JSSE only.</p>
+      <p>The name of the keystore provider to be used for the server
+      certificate. If not specified, the list of registered providers is
+      traversed in preference order and the first provider that supports the
+      <code>keystoreType</code> is used.
+      </p>
+    </attribute>
+
+    <attribute name="certificateKeystoreType" required="true">
+      <p>JSSE only.</p>
+      <p>The type of keystore file to be used for the server certificate.
+      If not specified, the default value is "<code>JKS</code>".</p>
     </attribute>
 
     <attribute name="certificateRevocationFile" required="false">
@@ -1193,13 +1219,9 @@
     </attribute>
 
     <attribute name="keyAlias" required="false">
-      <p>The alias used for the server key and certificate in the keystore. If
-      not specified, the first key read from the keystore will be used. The
-      order in which keys are read from the keystore is implementation
-      dependent. It may not be the case that keys are read from the keystore in
-      the same order as they were added. If more than one key is present in the
-      kesytore it is strongly recommended that a keyAlias is configured to
-      ensure that the correct key is used.</p>
+      <p>This is an alias for the <code>certificateKeyAlias</code> attribute of
+      the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a>
+      element.</p>
     </attribute>
 
     <attribute name="keyPass" required="false">
@@ -1221,16 +1243,15 @@
     </attribute>
 
     <attribute name="keystoreProvider" required="false">
-      <p>The name of the keystore provider to be used for the server
-      certificate. If not specified, the list of registered providers is
-      traversed in preference order and the first provider that supports the
-      <code>keystoreType</code> is used.
-      </p>
+      <p>This is an alias for the <code>certificateKeystoreProvider</code>
+      attribute of the default
+      <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p>
     </attribute>
 
     <attribute name="keystoreType" required="false">
-      <p>The type of keystore file to be used for the server certificate.
-      If not specified, the default value is "<code>JKS</code>".</p>
+      <p>This is an alias for the <code>certificateKeystoreType</code> 
attribute
+      of the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a>
+      element.</p>
     </attribute>
 
     <attribute name="sessionCacheSize" 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