You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2003/07/11 03:04:43 UTC
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5 CoyoteConnector.java CoyoteServerSocketFactory.java mbeans-descriptors.xml
luehe 2003/07/10 18:04:43
Modified: catalina/src/share/org/apache/coyote/tomcat5
CoyoteConnector.java CoyoteServerSocketFactory.java
mbeans-descriptors.xml
Log:
Added support for enabling subset of supported SSL cipher suites (based on earlier proposal)
Revision Changes Path
1.12 +34 -1 jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteConnector.java
Index: CoyoteConnector.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteConnector.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CoyoteConnector.java 10 Jul 2003 23:30:49 -0000 1.11
+++ CoyoteConnector.java 11 Jul 2003 01:04:43 -0000 1.12
@@ -1294,6 +1294,8 @@
IntrospectionUtils.setProperty(protocolHandler,
"sSLImplementation",
ssf.getSSLImplementation());
+ IntrospectionUtils.setProperty(protocolHandler, "ciphers",
+ ssf.getCiphers());
} else {
IntrospectionUtils.setProperty(protocolHandler, "secure",
"" + false);
@@ -1461,7 +1463,6 @@
return null;
}
-
/**
* Set keystorePass
*/
@@ -1472,6 +1473,38 @@
((CoyoteServerSocketFactory)factory).setKeystorePass(keystorePass);
}
}
+
+ /**
+ * Gets the list of SSL cipher suites that are to be enabled
+ *
+ * @return Comma-separated list of SSL cipher suites, or null if all
+ * cipher suites supported by the underlying SSL implementation are being
+ * enabled
+ */
+ public String getCiphers() {
+ ServerSocketFactory factory = getFactory();
+ if (factory instanceof CoyoteServerSocketFactory) {
+ return ((CoyoteServerSocketFactory)factory).getCiphers();
+ }
+ return null;
+ }
+
+ /**
+ * Sets the SSL cipher suites that are to be enabled.
+ *
+ * Only those SSL cipher suites that are actually supported by
+ * the underlying SSL implementation will be enabled.
+ *
+ * @param ciphers Comma-separated list of SSL cipher suites
+ */
+ public void setCiphers(String ciphers) {
+ setProperty("ciphers", ciphers);
+ ServerSocketFactory factory = getFactory();
+ if (factory instanceof CoyoteServerSocketFactory) {
+ ((CoyoteServerSocketFactory)factory).setCiphers(ciphers);
+ }
+ }
+
// -------------------- JMX registration --------------------
protected String domain;
1.2 +108 -36 jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteServerSocketFactory.java
Index: CoyoteServerSocketFactory.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteServerSocketFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CoyoteServerSocketFactory.java 19 Apr 2003 18:49:10 -0000 1.1
+++ CoyoteServerSocketFactory.java 11 Jul 2003 01:04:43 -0000 1.2
@@ -102,48 +102,73 @@
public class CoyoteServerSocketFactory
implements org.apache.catalina.net.ServerSocketFactory {
+ private String algorithm = null;
+ private boolean clientAuth = false;
+ private String keystoreFile =
+ System.getProperty("user.home") + File.separator + ".keystore";
+ private String randomFile =
+ System.getProperty("user.home") + File.separator + "random.pem";
+ private String rootFile =
+ System.getProperty("user.home") + File.separator + "root.pem";
+ private String keystorePass = "changeit";
+ private String keystoreType = "JKS";
+ private String protocol = "TLS";
+ private String sslImplementation = null;
+ private String cipherSuites;
// ------------------------------------------------------------- Properties
-
/**
- * Certificate encoding algorithm to be used.
+ * Gets the certificate encoding algorithm to be used.
+ *
+ * @return Certificate encoding algorithm
*/
- private String algorithm = null;
-
public String getAlgorithm() {
return (this.algorithm);
}
+ /**
+ * Sets the certificate encoding algorithm to be used.
+ *
+ * @param algorithm Certificate encoding algorithm
+ */
public void setAlgorithm(String algorithm) {
this.algorithm = algorithm;
}
-
/**
- * Should we require client authentication?
+ * Provides information about whether client authentication is enforced.
+ *
+ * @return true if client authentication is enforced, false otherwise
*/
- private boolean clientAuth = false;
-
public boolean getClientAuth() {
return (this.clientAuth);
}
+ /**
+ * Sets the requirement of client authentication.
+ *
+ * @param clientAuth true if client authentication is enforced, false
+ * otherwise
+ */
public void setClientAuth(boolean clientAuth) {
this.clientAuth = clientAuth;
}
-
/**
- * Pathname to the key store file to be used.
+ * Gets the pathname to the keystore file.
+ *
+ * @return Pathname to the keystore file
*/
- private String keystoreFile =
- System.getProperty("user.home") + File.separator + ".keystore";
-
public String getKeystoreFile() {
return (this.keystoreFile);
}
+ /**
+ * Sets the pathname to the keystore file.
+ *
+ * @param keystoreFile Pathname to the keystore file
+ */
public void setKeystoreFile(String keystoreFile) {
File file = new File(keystoreFile);
@@ -154,15 +179,19 @@
}
/**
- * Pathname to the random file to be used.
+ * Gets the pathname to the random file.
+ *
+ * @return Pathname to the random file
*/
- private String randomFile =
- System.getProperty("user.home") + File.separator + "random.pem";
-
public String getRandomFile() {
return (this.randomFile);
}
+ /**
+ * Sets the pathname to the random file.
+ *
+ * @param randomFile Pathname to the random file
+ */
public void setRandomFile(String randomFile) {
File file = new File(randomFile);
@@ -173,15 +202,19 @@
}
/**
- * Pathname to the root list to be used.
+ * Gets the pathname to the root list.
+ *
+ * @return Pathname to the root list
*/
- private String rootFile =
- System.getProperty("user.home") + File.separator + "root.pem";
-
public String getRootFile() {
return (this.rootFile);
}
+ /**
+ * Sets the pathname to the root list.
+ *
+ * @param rootFile Pathname to the root list
+ */
public void setRootFile(String rootFile) {
File file = new File(rootFile);
@@ -192,60 +225,99 @@
}
/**
- * Password for accessing the key store file.
+ * Gets the keystore password.
+ *
+ * @return Keystore password
*/
- private String keystorePass = "changeit";
-
public String getKeystorePass() {
return (this.keystorePass);
}
+ /**
+ * Sets the keystore password.
+ *
+ * @param keystorePass Keystore password
+ */
public void setKeystorePass(String keystorePass) {
this.keystorePass = keystorePass;
}
-
/**
- * Storeage type of the key store file to be used.
+ * Gets the keystore type.
+ *
+ * @return Keystore type
*/
- private String keystoreType = "JKS";
-
public String getKeystoreType() {
return (this.keystoreType);
}
+ /**
+ * Sets the keystore type.
+ *
+ * @param keystoreType Keystore type
+ */
public void setKeystoreType(String keystoreType) {
this.keystoreType = keystoreType;
}
-
/**
- * SSL protocol variant to use.
+ * Gets the SSL protocol variant to be used.
+ *
+ * @return SSL protocol variant
*/
- private String protocol = "TLS";
-
public String getProtocol() {
return (this.protocol);
}
+ /**
+ * Sets the SSL protocol variant to be used.
+ *
+ * @param protocol SSL protocol variant
+ */
public void setProtocol(String protocol) {
this.protocol = protocol;
}
-
/**
- * SSL implementation to use.
+ * Gets the name of the SSL implementation to be used.
+ *
+ * @return SSL implementation name
*/
- private String sslImplementation = null;
-
public String getSSLImplementation() {
return (this.sslImplementation);
}
+ /**
+ * Sets the name of the SSL implementation to be used.
+ *
+ * @param sslImplementation SSL implementation name
+ */
public void setSSLImplementation(String sslImplementation) {
this.sslImplementation = sslImplementation;
}
+ /**
+ * Gets the list of SSL cipher suites that are to be enabled
+ *
+ * @return Comma-separated list of SSL cipher suites, or null if all
+ * cipher suites supported by the underlying SSL implementation are being
+ * enabled
+ */
+ public String getCiphers() {
+ return this.cipherSuites;
+ }
+
+ /**
+ * Sets the SSL cipher suites that are to be enabled.
+ *
+ * Only those SSL cipher suites that are actually supported by
+ * the underlying SSL implementation will be enabled.
+ *
+ * @param ciphers Comma-separated list of SSL cipher suites
+ */
+ public void setCiphers(String ciphers) {
+ this.cipherSuites = ciphers;
+ }
// --------------------------------------------------------- Public Methods
1.2 +4 -0 jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/mbeans-descriptors.xml
Index: mbeans-descriptors.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/mbeans-descriptors.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mbeans-descriptors.xml 19 Apr 2003 18:49:10 -0000 1.1
+++ mbeans-descriptors.xml 11 Jul 2003 01:04:43 -0000 1.2
@@ -28,6 +28,10 @@
description="Should we require client authentication?"
type="boolean"/>
+ <attribute name="ciphers"
+ description="Comma-separated list of SSL cipher suites to be enabled"
+ type="java.lang.String"/>
+
<attribute name="connectionTimeout"
description="Timeout value on the incoming connection"
type="int"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org