Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ public class SslConfigs {

public static final String SSL_PROTOCOL_CONFIG = "ssl.protocol";
public static final String SSL_PROTOCOL_DOC = "The SSL protocol used to generate the SSLContext. "
+ "Default setting is TLS, which is fine for most cases. "
+ "Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 "
+ "Default setting is TLSv1.2, which is fine for most cases. "
+ "Allowed values in recent JVMs are TLSv1.2 and TLSv1.3. TLS, TLSv1.1, SSL, SSLv2 and SSLv3 "
+ "may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities.";

public static final String DEFAULT_SSL_PROTOCOL = "TLS";
public static final String DEFAULT_SSL_PROTOCOL = "TLSv1.2";

public static final String SSL_PROVIDER_CONFIG = "ssl.provider";
public static final String SSL_PROVIDER_DOC = "The name of the security provider used for SSL connections. Default value is the default security provider of the JVM.";
Expand All @@ -64,7 +64,7 @@ public class SslConfigs {

public static final String SSL_ENABLED_PROTOCOLS_CONFIG = "ssl.enabled.protocols";
public static final String SSL_ENABLED_PROTOCOLS_DOC = "The list of protocols enabled for SSL connections.";
public static final String DEFAULT_SSL_ENABLED_PROTOCOLS = "TLSv1.2,TLSv1.1,TLSv1";
public static final String DEFAULT_SSL_ENABLED_PROTOCOLS = "TLSv1.2";

public static final String SSL_KEYSTORE_TYPE_CONFIG = "ssl.keystore.type";
public static final String SSL_KEYSTORE_TYPE_DOC = "The file format of the key store file. "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,20 +552,54 @@ public void testInvalidKeyPassword() throws Exception {
}

/**
* Tests that connections cannot be made with unsupported TLS versions
* Tests that connection success with the default TLS version.
*/
@Test
public void testUnsupportedTLSVersion() throws Exception {
String node = "0";
sslServerConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, Arrays.asList("TLSv1.2"));
public void testTLSDefaults() throws Exception {
sslServerConfigs = serverCertStores.getTrustingConfig(clientCertStores);
sslClientConfigs = clientCertStores.getTrustingConfig(serverCertStores);

assertEquals(SslConfigs.DEFAULT_SSL_PROTOCOL, sslServerConfigs.get(SslConfigs.SSL_PROTOCOL_CONFIG));
assertEquals(SslConfigs.DEFAULT_SSL_PROTOCOL, sslClientConfigs.get(SslConfigs.SSL_PROTOCOL_CONFIG));
Comment thread
nizhikov marked this conversation as resolved.

server = createEchoServer(SecurityProtocol.SSL);
createSelector(sslClientConfigs);

InetSocketAddress addr = new InetSocketAddress("localhost", server.port());
selector.connect("0", addr, BUFFER_SIZE, BUFFER_SIZE);

NetworkTestUtils.checkClientConnection(selector, "0", 10, 100);
server.verifyAuthenticationMetrics(1, 0);
selector.close();

checkAuthentiationFailed("1", "TLSv1.1");
Comment thread
nizhikov marked this conversation as resolved.
server.verifyAuthenticationMetrics(1, 1);

sslClientConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, Arrays.asList("TLSv1.1"));
checkAuthentiationFailed("2", "TLSv1");
server.verifyAuthenticationMetrics(1, 2);
}

/** Checks connection failed using the specified {@code tlsVersion}. */
private void checkAuthentiationFailed(String node, String tlsVersion) throws IOException {
sslClientConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, Arrays.asList(tlsVersion));
createSelector(sslClientConfigs);
InetSocketAddress addr = new InetSocketAddress("localhost", server.port());
selector.connect(node, addr, BUFFER_SIZE, BUFFER_SIZE);

NetworkTestUtils.waitForChannelClose(selector, node, ChannelState.State.AUTHENTICATION_FAILED);

selector.close();
}

/**
* Tests that connections cannot be made with unsupported TLS versions
*/
@Test
public void testUnsupportedTLSVersion() throws Exception {
sslServerConfigs.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, Arrays.asList("TLSv1.2"));
server = createEchoServer(SecurityProtocol.SSL);

checkAuthentiationFailed("0", "TLSv1.1");
server.verifyAuthenticationMetrics(0, 1);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
public class TestSslUtils {

public static final String TRUST_STORE_PASSWORD = "TrustStorePassword";
public static final String DEFAULT_TLS_PROTOCOL_FOR_TESTS = "TLSv1.2";
public static final String DEFAULT_TLS_PROTOCOL_FOR_TESTS = SslConfigs.DEFAULT_SSL_PROTOCOL;

/**
* Create a self-signed X.509 Certificate.
Expand Down