Author: markt Date: Fri Sep 3 16:40:16 2010 New Revision: 992363 URL: http://svn.apache.org/viewvc?rev=992363&view=rev Log: Add SSL with APR support to the admin app
Modified: tomcat/tc5.5.x/trunk/STATUS.txt tomcat/tc5.5.x/trunk/connectors/http11/src/java/org/apache/coyote/http11/Http11AprProtocol.java tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/connector/mbeans-descriptors.xml tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources.properties tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/AddConnectorAction.java tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/ConnectorForm.java tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/EditConnectorAction.java tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/SaveConnectorAction.java tomcat/tc5.5.x/trunk/container/webapps/admin/connector/connector.jsp tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Modified: tomcat/tc5.5.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/STATUS.txt?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/STATUS.txt (original) +++ tomcat/tc5.5.x/trunk/STATUS.txt Fri Sep 3 16:40:16 2010 @@ -88,10 +88,3 @@ PATCHES PROPOSED TO BACKPORT: and thus I am letting this pass. The SingleSignOn valve is usually added to a <Host> (looking at the default server.xml), so we have to call request.getContext() to get a Context there? - -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49774 - Add SSL support using the APR connector to the admin app - https://issues.apache.org/bugzilla/attachment.cgi?id=25954 - +1: markt, jim, mturk - -1: - Modified: tomcat/tc5.5.x/trunk/connectors/http11/src/java/org/apache/coyote/http11/Http11AprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/connectors/http11/src/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/connectors/http11/src/java/org/apache/coyote/http11/Http11AprProtocol.java (original) +++ tomcat/tc5.5.x/trunk/connectors/http11/src/java/org/apache/coyote/http11/Http11AprProtocol.java Fri Sep 3 16:40:16 2010 @@ -498,14 +498,20 @@ public class Http11AprProtocol implement * SSL engine. */ public String getSSLEngine() { return ep.getSSLEngine(); } - public void setSSLEngine(String SSLEngine) { ep.setSSLEngine(SSLEngine); } + public void setSSLEngine(String SSLEngine) { + ep.setSSLEngine(SSLEngine); + setAttribute("SSLEngine", SSLEngine); + } /** * SSL protocol. */ public String getSSLProtocol() { return ep.getSSLProtocol(); } - public void setSSLProtocol(String SSLProtocol) { ep.setSSLProtocol(SSLProtocol); } + public void setSSLProtocol(String SSLProtocol) { + ep.setSSLProtocol(SSLProtocol); + setAttribute("SSLProtocol", SSLProtocol); + } /** @@ -513,77 +519,110 @@ public class Http11AprProtocol implement * will ask for a password). */ public String getSSLPassword() { return ep.getSSLPassword(); } - public void setSSLPassword(String SSLPassword) { ep.setSSLPassword(SSLPassword); } + public void setSSLPassword(String SSLPassword) { + ep.setSSLPassword(SSLPassword); + setAttribute("SSLPassword", SSLPassword); + } /** * SSL cipher suite. */ public String getSSLCipherSuite() { return ep.getSSLCipherSuite(); } - public void setSSLCipherSuite(String SSLCipherSuite) { ep.setSSLCipherSuite(SSLCipherSuite); } + public void setSSLCipherSuite(String SSLCipherSuite) { + ep.setSSLCipherSuite(SSLCipherSuite); + setAttribute("SSLCipherSuite", SSLCipherSuite); + } /** * SSL certificate file. */ public String getSSLCertificateFile() { return ep.getSSLCertificateFile(); } - public void setSSLCertificateFile(String SSLCertificateFile) { ep.setSSLCertificateFile(SSLCertificateFile); } + public void setSSLCertificateFile(String SSLCertificateFile) { + ep.setSSLCertificateFile(SSLCertificateFile); + setAttribute("SSLCertificateFile", SSLCertificateFile); + } /** * SSL certificate key file. */ public String getSSLCertificateKeyFile() { return ep.getSSLCertificateKeyFile(); } - public void setSSLCertificateKeyFile(String SSLCertificateKeyFile) { ep.setSSLCertificateKeyFile(SSLCertificateKeyFile); } + public void setSSLCertificateKeyFile(String SSLCertificateKeyFile) { + ep.setSSLCertificateKeyFile(SSLCertificateKeyFile); + setAttribute("SSLCertificateKeyFile", SSLCertificateKeyFile); + } /** * SSL certificate chain file. */ public String getSSLCertificateChainFile() { return ep.getSSLCertificateChainFile(); } - public void setSSLCertificateChainFile(String SSLCertificateChainFile) { ep.setSSLCertificateChainFile(SSLCertificateChainFile); } + public void setSSLCertificateChainFile(String SSLCertificateChainFile) { + ep.setSSLCertificateChainFile(SSLCertificateChainFile); + setAttribute("SSLCertificateChainFile", SSLCertificateChainFile); + } /** * SSL CA certificate path. */ public String getSSLCACertificatePath() { return ep.getSSLCACertificatePath(); } - public void setSSLCACertificatePath(String SSLCACertificatePath) { ep.setSSLCACertificatePath(SSLCACertificatePath); } + public void setSSLCACertificatePath(String SSLCACertificatePath) { + ep.setSSLCACertificatePath(SSLCACertificatePath); + setAttribute("SSLCACertificatePath", SSLCACertificatePath); + } /** * SSL CA certificate file. */ public String getSSLCACertificateFile() { return ep.getSSLCACertificateFile(); } - public void setSSLCACertificateFile(String SSLCACertificateFile) { ep.setSSLCACertificateFile(SSLCACertificateFile); } + public void setSSLCACertificateFile(String SSLCACertificateFile) { + ep.setSSLCACertificateFile(SSLCACertificateFile); + setAttribute("SSLCACertificateFile", SSLCACertificateFile); + } /** * SSL CA revocation path. */ public String getSSLCARevocationPath() { return ep.getSSLCARevocationPath(); } - public void setSSLCARevocationPath(String SSLCARevocationPath) { ep.setSSLCARevocationPath(SSLCARevocationPath); } + public void setSSLCARevocationPath(String SSLCARevocationPath) { + ep.setSSLCARevocationPath(SSLCARevocationPath); + setAttribute("SSLCARevocationPath", SSLCARevocationPath); + } /** * SSL CA revocation file. */ public String getSSLCARevocationFile() { return ep.getSSLCARevocationFile(); } - public void setSSLCARevocationFile(String SSLCARevocationFile) { ep.setSSLCARevocationFile(SSLCARevocationFile); } + public void setSSLCARevocationFile(String SSLCARevocationFile) { + ep.setSSLCARevocationFile(SSLCARevocationFile); + setAttribute("SSLCARevocationFile", SSLCARevocationFile); + } /** * SSL verify client. */ public String getSSLVerifyClient() { return ep.getSSLVerifyClient(); } - public void setSSLVerifyClient(String SSLVerifyClient) { ep.setSSLVerifyClient(SSLVerifyClient); } + public void setSSLVerifyClient(String SSLVerifyClient) { + ep.setSSLVerifyClient(SSLVerifyClient); + setAttribute("SSLVerifyClient", SSLVerifyClient); + } /** * SSL verify depth. */ public int getSSLVerifyDepth() { return ep.getSSLVerifyDepth(); } - public void setSSLVerifyDepth(int SSLVerifyDepth) { ep.setSSLVerifyDepth(SSLVerifyDepth); } + public void setSSLVerifyDepth(int SSLVerifyDepth) { + ep.setSSLVerifyDepth(SSLVerifyDepth); + setAttribute("SSLVerifyDepth", "" + SSLVerifyDepth); + } // -------------------- Connection handler -------------------- Modified: tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/connector/mbeans-descriptors.xml URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/connector/mbeans-descriptors.xml?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/connector/mbeans-descriptors.xml (original) +++ tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/connector/mbeans-descriptors.xml Fri Sep 3 16:40:16 2010 @@ -171,6 +171,58 @@ description="Comma-separated list of SSL protocol variants to be enabled" type="java.lang.String"/> + <attribute name="SSLEngine" + description="Name of SSL engine to use" + type="java.lang.String"/> + + <attribute name="SSLProtocol" + description="Protocol to use to communicate with clients" + type="java.lang.String"/> + + <attribute name="SSLCipherSuite" + description="Ciphers to use to communicate with clients" + type="java.lang.String"/> + + <attribute name="SSLCertificateFile" + description="File containing server certificate" + type="java.lang.String"/> + + <attribute name="SSLCertificateKeyFile" + description="File containing server private key" + type="java.lang.String"/> + + <attribute name="SSLPassword" + description="Pass phrase for the server private key" + type="java.lang.String"/> + + <attribute name="SSLVerifyClient" + description="Extend to which clients must be validated" + type="java.lang.String"/> + + <attribute name="SSLVerifyDepth" + description="Maximum verification depth for client certificates" + type="int"/> + + <attribute name="SSLCACertificateFile" + description="File containing CA certificates" + type="java.lang.String"/> + + <attribute name="SSLCACertificatePath" + description="Directory containing CA certificates" + type="java.lang.String"/> + + <attribute name="SSLCertificateChainFile" + description="File containing certificates in server certificate chain" + type="java.lang.String"/> + + <attribute name="SSLCARevocationFile" + description="File containing CA revocation lists" + type="java.lang.String"/> + + <attribute name="SSLCARevocationPath" + description="Directory containing CA revocation lists" + type="java.lang.String"/> + <attribute name="strategy" description="Thread pool strategy" type="java.lang.String"/> Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources.properties URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources.properties?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources.properties (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources.properties Fri Sep 3 16:40:16 2010 @@ -163,8 +163,22 @@ connector.truststore.type=Trust Store Ty connector.sslProtocol=SSL Protocol connector.keyPass.warning=<li>Please use keytool to generate certificate.</li> connector.secure=Secure -connector.tcpNoDelay=TCP No Delay -connector.xpoweredby=X Powered By +connector.tcpNoDelay=TCP No Delay +connector.xpoweredby=X Powered By +connector.sslProperties=SSL Properties +connector.SSLEngine=Engine +connector.SSLProtocol=Protocols +connector.SSLCipherSuite=Ciphers +connector.SSLCertificateFile=Server certificate file +connector.SSLCertificateKeyFile=Server private key file +connector.SSLPassword=Private key pass phrase +connector.SSLVerifyClient=Client verification mode +connector.SSLVerifyDepthText=Client verification depth +connector.SSLCACertificateFile=File of CA certificates +connector.SSLCACertificatePath=Directory of CA certificates +connector.SSLCertificateChainFile=Server certificate chain +connector.SSLCARevocationFile=File of CA revocation lists +connector.SSLCARevocationPath=Directory of CA revocation lists host.properties=Host Properties host.name=Name host.base=Application Base Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/AddConnectorAction.java URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/AddConnectorAction.java?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/AddConnectorAction.java (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/AddConnectorAction.java Fri Sep 3 16:40:16 2010 @@ -83,7 +83,8 @@ public class AddConnectorAction extends type = "HTTP"; // default type is HTTP connectorFm.setConnectorType(type); connectorFm.setServiceName(serviceName); - if ("HTTPS".equalsIgnoreCase(type)) { + if ("HTTPS-JSSE".equalsIgnoreCase(type) || + "HTTPS-APR".equalsIgnoreCase(type)) { connectorFm.setScheme("https"); } else { connectorFm.setScheme("http"); @@ -110,7 +111,7 @@ public class AddConnectorAction extends connectorFm.setTcpNoDelay("true"); connectorFm.setXpoweredBy("false"); - //supported only by HTTPS + //supported only by HTTPS-JSSE connectorFm.setAlgorithm("SunX509"); connectorFm.setClientAuthentication("false"); connectorFm.setCiphers(""); @@ -121,7 +122,22 @@ public class AddConnectorAction extends connectorFm.setTrustStorePassword(""); connectorFm.setTrustStoreType("JKS"); connectorFm.setSslProtocol("TLS"); - + + //supported only by HTTPS-APR + connectorFm.setSSLEngine(""); + connectorFm.setSSLProtocol(""); + connectorFm.setSSLCipherSuite(""); + connectorFm.setSSLCertificateFile(""); + connectorFm.setSSLCertificateKeyFile(""); + connectorFm.setSSLPassword(""); + connectorFm.setSSLVerifyClient("none"); + connectorFm.setSSLVerifyDepthText("10"); + connectorFm.setSSLCACertificateFile(""); + connectorFm.setSSLCACertificatePath(""); + connectorFm.setSSLCertificateChainFile(""); + connectorFm.setSSLCARevocationFile(""); + connectorFm.setSSLCACertificatePath(""); + // supported only by Coyote connectors connectorFm.setProxyName(""); connectorFm.setProxyPortText("0"); @@ -129,10 +145,11 @@ public class AddConnectorAction extends connectorFm.setBooleanVals(Lists.getBooleanValues()); connectorFm.setClientAuthVals(Lists.getClientAuthValues()); - String schemeTypes[]= new String[3]; + String schemeTypes[]= new String[4]; schemeTypes[0] = "HTTP"; - schemeTypes[1] = "HTTPS"; - schemeTypes[2] = "AJP"; + schemeTypes[1] = "HTTPS-JSSE"; + schemeTypes[2] = "HTTPS-APR"; + schemeTypes[3] = "AJP"; ArrayList types = new ArrayList(); // the first element in the select list should be the type selected Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/ConnectorForm.java URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/ConnectorForm.java?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/ConnectorForm.java (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/ConnectorForm.java Fri Sep 3 16:40:16 2010 @@ -269,6 +269,21 @@ public final class ConnectorForm extends */ private String xpoweredBy = "false"; + private String SSLEngine; + private String SSLProtocol; + private String SSLCipherSuite; + private String SSLCertificateFile; + private String SSLCertificateKeyFile; + private String SSLPassword; + private String SSLVerifyClient; + private String SSLVerifyDepthText; + private String SSLCACertificateFile; + private String SSLCACertificatePath; + private String SSLCertificateChainFile; + private String SSLCARevocationFile; + private String SSLCARevocationPath; + + // ------------------------------------------------------------- Properties /** @@ -1127,6 +1142,136 @@ public final class ConnectorForm extends } + public String getSSLEngine() { + return SSLEngine; + } + + + public void setSSLEngine(String sSLEngine) { + SSLEngine = sSLEngine; + } + + + public String getSSLProtocol() { + return SSLProtocol; + } + + + public void setSSLProtocol(String sSLProtocol) { + SSLProtocol = sSLProtocol; + } + + + public String getSSLCipherSuite() { + return SSLCipherSuite; + } + + + public void setSSLCipherSuite(String sSLCipherSuite) { + SSLCipherSuite = sSLCipherSuite; + } + + + public String getSSLCertificateFile() { + return SSLCertificateFile; + } + + + public void setSSLCertificateFile(String sSLCertificateFile) { + SSLCertificateFile = sSLCertificateFile; + } + + + public String getSSLCertificateKeyFile() { + return SSLCertificateKeyFile; + } + + + public void setSSLCertificateKeyFile(String sSLCertificateKeyFile) { + SSLCertificateKeyFile = sSLCertificateKeyFile; + } + + + public String getSSLPassword() { + return SSLPassword; + } + + + public void setSSLPassword(String sSLPassword) { + SSLPassword = sSLPassword; + } + + + public String getSSLVerifyClient() { + return SSLVerifyClient; + } + + + public void setSSLVerifyClient(String sSLVerifyClient) { + SSLVerifyClient = sSLVerifyClient; + } + + + public String getSSLVerifyDepthText() { + return SSLVerifyDepthText; + } + + + public void setSSLVerifyDepthText(String sSLVerifyDepthText) { + SSLVerifyDepthText = sSLVerifyDepthText; + } + + + public String getSSLCACertificateFile() { + return SSLCACertificateFile; + } + + + public void setSSLCACertificateFile(String sSLCACertificateFile) { + SSLCACertificateFile = sSLCACertificateFile; + } + + + public String getSSLCACertificatePath() { + return SSLCACertificatePath; + } + + + public void setSSLCACertificatePath(String sSLCACertificatePath) { + SSLCACertificatePath = sSLCACertificatePath; + } + + + public String getSSLCertificateChainFile() { + return SSLCertificateChainFile; + } + + + public void setSSLCertificateChainFile(String sSLCertificateChainFile) { + SSLCertificateChainFile = sSLCertificateChainFile; + } + + + public String getSSLCARevocationFile() { + return SSLCARevocationFile; + } + + + public void setSSLCARevocationFile(String sSLCARevocationFile) { + SSLCARevocationFile = sSLCARevocationFile; + } + + + public String getSSLCARevocationPath() { + return SSLCARevocationPath; + } + + + public void setSSLCARevocationPath(String sSLCARevocationPath) { + SSLCARevocationPath = sSLCARevocationPath; + } + + // --------------------------------------------------------- Public Methods /** @@ -1171,7 +1316,19 @@ public final class ConnectorForm extends this.trustStoreFileName = null; this.trustStorePassword = null; this.trustStoreType = null; - + this.SSLEngine = null; + this.SSLProtocol = null; + this.SSLCipherSuite = null; + this.SSLCertificateFile = null; + this.SSLCertificateKeyFile = null; + this.SSLPassword = null; + this.SSLVerifyClient = null; + this.SSLVerifyDepthText = null; + this.SSLCACertificateFile = null; + this.SSLCACertificatePath = null; + this.SSLCertificateChainFile = null; + this.SSLCARevocationFile = null; + this.SSLCARevocationPath = null; } @@ -1227,6 +1384,9 @@ public final class ConnectorForm extends numberCheck("proxyPortText", proxyPortText, true, 0, 65535); } + if ("HTTP-APR".equalsIgnoreCase(connectorType)) { + numberCheck("SSLVerifyDepthText", SSLVerifyDepthText, true, 1, 100); + } return errors; } Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/EditConnectorAction.java URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/EditConnectorAction.java?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/EditConnectorAction.java (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/EditConnectorAction.java Fri Sep 3 16:40:16 2010 @@ -130,14 +130,16 @@ public class EditConnectorAction extends (String) mBServer.getAttribute(cname, attribute); int period = handlerClassName.lastIndexOf('.'); String connType = handlerClassName.substring(period + 1); - String connectorType = "HTTPS"; + String connectorType = "HTTP"; if ("JkCoyoteHandler".equalsIgnoreCase(connType) || "AjpAprProtocol".equalsIgnoreCase(connType)) { connectorType = "AJP"; - } else if (("Http11Protocol".equalsIgnoreCase(connType) || - "Http11AprProtocol".equalsIgnoreCase(connType)) && - ("http".equalsIgnoreCase(scheme))) { - connectorType = "HTTP"; + } else if ("Http11Protocol".equalsIgnoreCase(connType) && + "https".equalsIgnoreCase(scheme)) { + connectorType = "HTTPS-JSSE"; + } else if ("Http11AprProtocol".equalsIgnoreCase(connType) && + "https".equalsIgnoreCase(scheme)) { + connectorType = "HTTPS-APR"; } connectorFm.setConnectorType(connectorType); @@ -226,9 +228,8 @@ public class EditConnectorAction extends (((Integer) mBServer.getAttribute(cname, attribute)).toString()); } - if ("HTTPS".equalsIgnoreCase(connectorType)) { - // Initialize rest of variables. - // These are set only for SSL connectors. + if ("HTTPS-JSSE".equalsIgnoreCase(connectorType)) { + // These are set only for JSSE SSL connectors. attribute = "algorithm"; connectorFm.setAlgorithm ((String) mBServer.getAttribute(cname, attribute)); @@ -261,6 +262,48 @@ public class EditConnectorAction extends ((String) mBServer.getAttribute(cname, attribute)); } + if ("HTTPS-APR".equalsIgnoreCase(connectorType)) { + // These are set only for APR SSL connectors. + attribute = "SSLEngine"; + connectorFm.setSSLEngine + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLProtocol"; + connectorFm.setSSLProtocol + (((String) mBServer.getAttribute(cname, attribute))); + attribute = "SSLCipherSuite"; + connectorFm.setSSLCipherSuite + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCertificateFile"; + connectorFm.setSSLCertificateFile + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCertificateKeyFile"; + connectorFm.setSSLCertificateKeyFile + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLPassword"; + connectorFm.setSSLPassword + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLVerifyClient"; + connectorFm.setSSLVerifyClient + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLVerifyDepth"; + connectorFm.setSSLVerifyDepthText + (((Integer) mBServer.getAttribute(cname, attribute)).toString()); + attribute = "SSLCACertificateFile"; + connectorFm.setSSLCACertificateFile + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCACertificatePath"; + connectorFm.setSSLCACertificatePath + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCertificateChainFile"; + connectorFm.setSSLCertificateChainFile + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCARevocationFile"; + connectorFm.setSSLCARevocationFile + ((String) mBServer.getAttribute(cname, attribute)); + attribute = "SSLCARevocationPath"; + connectorFm.setSSLCARevocationPath + ((String) mBServer.getAttribute(cname, attribute)); + } } catch (Throwable t) { getServlet().log Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/SaveConnectorAction.java URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/SaveConnectorAction.java?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/SaveConnectorAction.java (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/connector/SaveConnectorAction.java Fri Sep 3 16:40:16 2010 @@ -160,11 +160,12 @@ public final class SaveConnectorAction e values[2] = new Integer(cform.getPortText()); if ("HTTP".equalsIgnoreCase(connectorType)) { - operation = "createHttpConnector"; // HTTP - } else if ("HTTPS".equalsIgnoreCase(connectorType)) { - operation = "createHttpsConnector"; // HTTPS + operation = "createHttpConnector"; // HTTP + } else if ("HTTPS-JSSE".equalsIgnoreCase(connectorType) || + "HTTPS-APR".equalsIgnoreCase(connectorType)) { + operation = "createHttpsConnector"; // HTTPS } else { - operation = "createAjpConnector"; // AJP(HTTP) + operation = "createAjpConnector"; // AJP(HTTP) } cObjectName = (String) @@ -388,8 +389,8 @@ public final class SaveConnectorAction e new Attribute("proxyPort", new Integer(proxyPort))); } - // HTTPS specific properties - if("HTTPS".equalsIgnoreCase(connectorType)) { + // HTTPS-JSSE specific properties + if("HTTPS-JSSE".equalsIgnoreCase(connectorType)) { String algorithm = cform.getAlgorithm(); if ((algorithm != null) && (algorithm.length()>0)) mBServer.setAttribute(coname, @@ -440,7 +441,94 @@ public final class SaveConnectorAction e mBServer.setAttribute(coname, new Attribute("sslProtocol", sslProtocol)); } - + + // HTTPS-APR specific properties + if("HTTPS-APR".equalsIgnoreCase(connectorType)) { + String sSLEngine = cform.getSSLEngine(); + if ((sSLEngine != null) && (sSLEngine.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLEngine", sSLEngine)); + + String sSLProtocol = cform.getSSLProtocol(); + if ((sSLProtocol != null) && (sSLProtocol.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLProtocol", sSLProtocol)); + + String sSLCipherSuite = cform.getSSLCipherSuite(); + if ((sSLCipherSuite != null) && (sSLCipherSuite.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCipherSuite", sSLCipherSuite)); + + mBServer.setAttribute(coname, + new Attribute("SSLCertificateFile", + cform.getSSLCertificateFile())); + + String sSLCertificateKeyFile = cform.getSSLCertificateKeyFile(); + if ((sSLCertificateKeyFile != null) && + (sSLCertificateKeyFile.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCertificateKeyFile", + sSLCertificateKeyFile)); + + String sSLPassword = cform.getSSLPassword(); + if ((sSLPassword != null) && (sSLPassword.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLPassword", sSLPassword)); + + String sSLVerifyClient = cform.getSSLVerifyClient(); + if ((sSLVerifyClient != null) && (sSLVerifyClient.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLVerifyClient", sSLVerifyClient)); + + String sSLVerifyDepthText = cform.getSSLVerifyDepthText(); + if ((sSLVerifyDepthText != null) && + (sSLVerifyDepthText.length()>0)) + try { + mBServer.setAttribute(coname, + new Attribute("SSLVerifyDepthText", + Integer.getInteger(sSLVerifyDepthText))); + } catch (NumberFormatException e) { + mBServer.setAttribute(coname, + new Attribute("SSLVerifyDepthText", + Integer.valueOf(10))); + } + + String sSLCACertificateFile = cform.getSSLCACertificateFile(); + if ((sSLCACertificateFile != null) && + (sSLCACertificateFile.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCACertificateFile", + sSLCACertificateFile)); + + String sSLCACertificatePath = cform.getSSLCACertificatePath(); + if ((sSLCACertificatePath != null) && + (sSLCACertificatePath.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCACertificatePath", + sSLCACertificatePath)); + + String sSLCertificateChainFile = + cform.getSSLCertificateChainFile(); + if ((sSLCertificateChainFile != null) && + (sSLCertificateChainFile.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCertificateChainFile", + sSLCertificateChainFile)); + + String sSLCARevocationFile = cform.getSSLCARevocationFile(); + if ((sSLCARevocationFile != null) && + (sSLCARevocationFile.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCARevocationFile", + sSLCARevocationFile)); + + String sSLCARevocationPath = cform.getSSLCARevocationPath(); + if ((sSLCARevocationPath != null) && (sSLCARevocationPath.length()>0)) + mBServer.setAttribute(coname, + new Attribute("SSLCARevocationPath", + sSLCARevocationPath)); + } + } catch (Exception e) { getServlet().log Modified: tomcat/tc5.5.x/trunk/container/webapps/admin/connector/connector.jsp URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/admin/connector/connector.jsp?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/admin/connector/connector.jsp (original) +++ tomcat/tc5.5.x/trunk/container/webapps/admin/connector/connector.jsp Fri Sep 3 16:40:16 2010 @@ -359,12 +359,12 @@ </controls:data> </controls:row> -<%-- The following properties are supported only on HTTPS Connector --%> - <logic:equal name="connectorForm" property="scheme" scope="session" - value="https"> +<%-- The following properties are supported only on HTTPS-JSSE Connector --%> + <logic:equal name="connectorForm" property="connectorType" scope="session" + value="HTTPS-JSSE"> <br> <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> - <controls:label>Factory Properties:</controls:label> + <controls:label><bean:message key="connector.sslProperties"/>:</controls:label> <controls:data> </controls:data> </controls:row> @@ -473,6 +473,108 @@ </controls:row> </logic:equal> + +<%-- The following properties are supported only on HTTPS-APR Connector --%> + <logic:equal name="connectorForm" property="connectorType" scope="session" + value="HTTPS-APR"> + <br> + <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> + <controls:label><bean:message key="connector.sslProperties"/>:</controls:label> + <controls:data> </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLEngine"> + <controls:label><bean:message key="connector.SSLEngine"/>:</controls:label> + <controls:data> + <html:text property="SSLEngine" size="10" styleId="SSLEngine"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLProtocol"> + <controls:label><bean:message key="connector.SSLProtocol"/>:</controls:label> + <controls:data> + <html:text property="SSLProtocol" size="30" styleId="SSLProtocol"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCipherSuite"> + <controls:label><bean:message key="connector.SSLCipherSuite"/>:</controls:label> + <controls:data> + <html:text property="SSLCipherSuite" size="30" styleId="SSLCipherSuite"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCertificateFile"> + <controls:label><bean:message key="connector.SSLCertificateFile"/>:</controls:label> + <controls:data> + <html:text property="SSLCertificateFile" size="30" styleId="SSLCertificateFile"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCertificateKeyFile"> + <controls:label><bean:message key="connector.SSLCertificateKeyFile"/>:</controls:label> + <controls:data> + <html:text property="SSLCertificateKeyFile" size="30" styleId="SSLCertificateKeyFile"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLPassword"> + <controls:label><bean:message key="connector.SSLPassword"/>:</controls:label> + <controls:data> + <html:text property="SSLPassword" size="30" styleId="SSLPassword"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLVerifyClient"> + <controls:label><bean:message key="connector.SSLVerifyClient"/>:</controls:label> + <controls:data> + <html:text property="SSLVerifyClient" size="10" styleId="SSLVerifyClient"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLVerifyDepthText"> + <controls:label><bean:message key="connector.SSLVerifyDepthText"/>:</controls:label> + <controls:data> + <html:text property="SSLVerifyDepthText" size="10" styleId="SSLVerifyDepthText"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCACertificateFile"> + <controls:label><bean:message key="connector.SSLCACertificateFile"/>:</controls:label> + <controls:data> + <html:text property="SSLCACertificateFile" size="30" styleId="SSLCACertificateFile"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCACertificatePath"> + <controls:label><bean:message key="connector.SSLCACertificatePath"/>:</controls:label> + <controls:data> + <html:text property="SSLCACertificatePath" size="30" styleId="SSLCACertificatePath"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCertificateChainFile"> + <controls:label><bean:message key="connector.SSLCertificateChainFile"/>:</controls:label> + <controls:data> + <html:text property="SSLCertificateChainFile" size="30" styleId="SSLCertificateChainFile"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCARevocationFile"> + <controls:label><bean:message key="connector.SSLCARevocationFile"/>:</controls:label> + <controls:data> + <html:text property="SSLCARevocationFile" size="30" styleId="SSLCARevocationFile"/> + </controls:data> + </controls:row> + + <controls:row labelStyle="table-label-text" dataStyle="table-normal-text" styleId="SSLCARevocationPath"> + <controls:label><bean:message key="connector.SSLCARevocationPath"/>:</controls:label> + <controls:data> + <html:text property="SSLCARevocationPath" size="30" styleId="SSLCARevocationPath"/> + </controls:data> + </controls:row> + </logic:equal> + </controls:table> </td> Modified: tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml?rev=992363&r1=992362&r2=992363&view=diff ============================================================================== --- tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml (original) +++ tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Fri Sep 3 16:40:16 2010 @@ -70,6 +70,10 @@ <bug>49585</bug>: Update JSVC documentation to reflect new packaging of Commons Daemon. (markt) </fix> + <fix> + <bug>49774</bug>: Add support for SSL with either JSSE or APR baaed + connectors to the admin app. (markt) + </fix> </changelog> </subsection> <subsection name="Cluster"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org