Author: markt
Date: Wed Jun 21 21:20:01 2017
New Revision: 1799515

URL: http://svn.apache.org/viewvc?rev=1799515&view=rev
Log:
Enable SSLv3 to be used. NOT enabled by default.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
    tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java
    tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java
    tomcat/trunk/webapps/docs/changelog.xml
    tomcat/trunk/webapps/docs/config/http.xml

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties?rev=1799515&r1=1799514&r2=1799515&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties Wed 
Jun 21 21:20:01 2017
@@ -109,6 +109,7 @@ channel.nio.ssl.sniHostName=The SNI host
 
 jsse.invalid_truststore_password=The provided trust store password could not 
be used to unlock and/or validate the trust store. Retrying to access the trust 
store with a null password which will skip validation.
 jsse.keystore_load_failed=Failed to load keystore type [{0}] with path [{1}] 
due to [{2}]
+jsse.ssl3=SSLv3 has been explicitly enabled. This protocol is known to be 
insecure.
 
 sniExtractor.clientHelloTooBig=The ClientHello was not presented in a single 
TLS record so no SNI information could be extracted
 

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java?rev=1799515&r1=1799514&r2=1799515&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java Wed Jun 21 
21:20:01 2017
@@ -53,6 +53,9 @@ public abstract class SSLUtilBase implem
         Set<String> implementedProtocols = getImplementedProtocols();
         List<String> enabledProtocols =
                 getEnabled("protocols", getLog(), true, configuredProtocols, 
implementedProtocols);
+        if (enabledProtocols.contains("SSLv3")) {
+            log.warn(sm.getString("jsse.ssl3"));
+        }
         this.enabledProtocols = enabledProtocols.toArray(new 
String[enabledProtocols.size()]);
 
         // Calculate the enabled ciphers

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java?rev=1799515&r1=1799514&r2=1799515&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java Wed Jun 21 
21:20:01 2017
@@ -96,13 +96,14 @@ public class JSSEUtil extends SSLUtilBas
         String[] implementedProtocolsArray = 
context.getSupportedSSLParameters().getProtocols();
         implementedProtocols = new HashSet<>(implementedProtocolsArray.length);
 
-        // Filter out all the SSL protocols (SSLv2 and SSLv3) from the list of
-        // implemented protocols since they are no longer considered secure but
-        // allow SSLv2Hello. This has the effect of making it impossible to use
-        // SSLv2 or SSLv3 without source code changes.
+        // Filter out SSLv2 from the list of implemented protocols (just in 
case
+        // we are running on a JVM that supports it) since it is no longer
+        // considered secure but allow SSLv2Hello.
+        // Note SSLv3 is allowed despite known insecurities because some users
+        // still have a requirement for it.
         for (String protocol : implementedProtocolsArray) {
             String protocolUpper = protocol.toUpperCase(Locale.ENGLISH);
-            if (!"SSLV2HELLO".equals(protocolUpper)) {
+            if (!"SSLV2HELLO".equals(protocolUpper) && 
!"SSLV3".equals(protocolUpper)) {
                 if (protocolUpper.contains("SSL")) {
                     log.debug(sm.getString("jsse.excludeProtocol", protocol));
                     continue;

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1799515&r1=1799514&r2=1799515&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Jun 21 21:20:01 2017
@@ -45,6 +45,15 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 9.0.0.M23 (markt)" rtext="in development">
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Restore the ability to configure support for SSLv3. Enabling this
+        protocol will trigger a warning in the logs since it is known to be
+        insecure. (markt)
+      </fix>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 9.0.0.M22 (markt)" rtext="release in progress">
   <subsection name="Catalina">

Modified: tomcat/trunk/webapps/docs/config/http.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1799515&r1=1799514&r2=1799515&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/http.xml (original)
+++ tomcat/trunk/webapps/docs/config/http.xml Wed Jun 21 21:20:01 2017
@@ -1230,8 +1230,8 @@
       <p>The names of the protocols to support when communicating with clients.
       This should be a list of any combination of the following:
       </p>
-      <ul><li>SSLv2Hello</li><li>TLSv1</li><li>TLSv1.1</li><li>TLSv1.2</li>
-          <li>all</li></ul>
+      <ul><li>SSLv2Hello</li><li>SSLv3</li><li>TLSv1</li><li>TLSv1.1</li>
+      <li>TLSv1.2</li><li>all</li></ul>
       <p>Each token in the list can be prefixed with a plus sign ("+")
       or a minus sign ("-"). A plus sign adds the protocol, a minus sign
       removes it form the current list. The list is built starting from



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

Reply via email to