Author: rgodfrey
Date: Wed Dec 9 17:16:18 2015
New Revision: 1718918
URL: http://svn.apache.org/viewvc?rev=1718918&view=rev
Log:
QPID-6938 : disable support for TLSv1
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
qpid/java/trunk/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/SecurityLayerFactory.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/ssl/SSLUtil.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java?rev=1718918&r1=1718917&r2=1718918&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
Wed Dec 9 17:16:18 2015
@@ -313,7 +313,7 @@ public class NonBlockingConnectionTLSDel
{
SSLEngine sslEngine = port.getSSLContext().createSSLEngine();
sslEngine.setUseClientMode(false);
- SSLUtil.removeSSLv3Support(sslEngine);
+ SSLUtil.updateProtocolSupport(sslEngine);
SSLUtil.updateEnabledCipherSuites(sslEngine,
port.getEnabledCipherSuites(), port.getDisabledCipherSuites());
if(port.getNeedClientAuth())
Modified:
qpid/java/trunk/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java?rev=1718918&r1=1718917&r2=1718918&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java
(original)
+++
qpid/java/trunk/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java
Wed Dec 9 17:16:18 2015
@@ -27,6 +27,7 @@ import java.security.Principal;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -121,6 +122,17 @@ class WebSocketProvider implements Accep
SslContextFactory factory = new SslContextFactory();
factory.setSslContext(_sslContext);
factory.addExcludeProtocols(SSLUtil.getExcludedSSlProtocols());
+
+ if(_port.getDisabledCipherSuites() != null)
+ {
+
factory.addExcludeCipherSuites(_port.getDisabledCipherSuites().toArray(new
String[_port.getDisabledCipherSuites().size()]));
+ }
+
+ if(_port.getEnabledCipherSuites() != null &&
!_port.getEnabledCipherSuites().isEmpty())
+ {
+
factory.setIncludeCipherSuites(_port.getEnabledCipherSuites().toArray(new
String[_port.getEnabledCipherSuites().size()]));
+ }
+
factory.setNeedClientAuth(_port.getNeedClientAuth());
factory.setWantClientAuth(_port.getWantClientAuth());
connector = new SslSelectChannelConnector(factory);
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java?rev=1718918&r1=1718917&r2=1718918&view=diff
==============================================================================
---
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
(original)
+++
qpid/java/trunk/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
Wed Dec 9 17:16:18 2015
@@ -56,7 +56,11 @@ public class CommonProperties
public static final int HANDSHAKE_TIMEOUT_DEFAULT = 2;
public static final String DISABLED_SSL_PROTOCOLS =
"qpid.disabled_ssl_protocols";
- public static final String DISABLED_SSL_PROTOCOLS_DEFAULT = "SSLv3";
//temp removed "SSLv3,TLSv1";
+ public static final String DISABLED_SSL_PROTOCOLS_DEFAULT = "SSLv3,TLSv1";
+
+ public static final String ENABLED_SSL_PROTOCOLS =
"qpid.enabled_ssl_protocols";
+ public static final String ENABLED_SSL_PROTOCOLS_DEFAULT =
"TLSv1.1,TLSv1.2";
+
/** The name of the version properties file to load from the class path. */
public static final String VERSION_RESOURCE = "qpidversion.properties";
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/SecurityLayerFactory.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/SecurityLayerFactory.java?rev=1718918&r1=1718917&r2=1718918&view=diff
==============================================================================
---
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/SecurityLayerFactory.java
(original)
+++
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/SecurityLayerFactory.java
Wed Dec 9 17:16:18 2015
@@ -101,7 +101,7 @@ public class SecurityLayerFactory
{
_engine = sslCtx.createSSLEngine();
_engine.setUseClientMode(true);
- SSLUtil.removeSSLv3Support(_engine);
+ SSLUtil.updateProtocolSupport(_engine);
}
catch(Exception e)
{
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/ssl/SSLUtil.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/ssl/SSLUtil.java?rev=1718918&r1=1718917&r2=1718918&view=diff
==============================================================================
---
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/ssl/SSLUtil.java
(original)
+++
qpid/java/trunk/common/src/main/java/org/apache/qpid/transport/network/security/ssl/SSLUtil.java
Wed Dec 9 17:16:18 2015
@@ -485,26 +485,48 @@ public class SSLUtil
return property.split("\\s*,\\s*");
}
- public static void removeSSLv3Support(final SSLEngine engine)
+
+ public static String[] getEnabledSSlProtocols()
+ {
+ String property =
System.getProperty(CommonProperties.ENABLED_SSL_PROTOCOLS,
+
CommonProperties.ENABLED_SSL_PROTOCOLS_DEFAULT);
+ return property.split("\\s*,\\s*");
+ }
+
+ public static void updateProtocolSupport(final SSLEngine engine)
+ {
+ List<String> enabledProtocols = new
ArrayList<>(Arrays.asList(engine.getEnabledProtocols()));
+ String[] supportedProtocols = engine.getSupportedProtocols();
+ boolean modified = updateEnabledProtocols(enabledProtocols,
supportedProtocols);
+ if(modified)
+ {
+ engine.setEnabledProtocols(enabledProtocols.toArray(new
String[enabledProtocols.size()]));
+ }
+ }
+
+ public static boolean updateEnabledProtocols(final List<String>
enabledProtocols, final String[] supportedProtocols)
{
- List<String> allowedProtocols = new
ArrayList<>(Arrays.asList(engine.getEnabledProtocols()));
boolean modified = false;
for(String protocol : getExcludedSSlProtocols())
{
- if (allowedProtocols.contains(protocol))
+ if (enabledProtocols.contains(protocol))
{
- allowedProtocols.remove(protocol);
+ enabledProtocols.remove(protocol);
modified = true;
}
}
- if(modified)
+ for(String protocol : getEnabledSSlProtocols())
{
- engine.setEnabledProtocols(allowedProtocols.toArray(new
String[allowedProtocols.size()]));
+ if(!enabledProtocols.contains(protocol) &&
Arrays.asList(supportedProtocols).contains(protocol))
+ {
+ enabledProtocols.add(protocol);
+ modified = true;
+ }
}
+ return modified;
}
-
public static void updateEnabledCipherSuites(final SSLEngine engine,
final Collection<String>
enabledCipherSuites,
final Collection<String>
disabledCipherSuites)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]