Skip to content

Commit 45f0699

Browse files
authored
SSLHandshake No appropriate protocol (protocol is disabled or cipher suites are inappropriate) (#5198)
Signed-off-by: Jorge Bescos Gascon <jorge.bescos.gascon@oracle.com>
1 parent ab8ac91 commit 45f0699

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/SslFilterTLS11Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at

connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/SslFilterTLS1Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at

connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/SslFilterTest.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,29 @@
2424
import java.net.ServerSocket;
2525
import java.net.SocketException;
2626
import java.nio.ByteBuffer;
27+
import java.security.KeyManagementException;
28+
import java.security.NoSuchAlgorithmException;
29+
import java.util.Arrays;
30+
import java.util.List;
2731
import java.util.concurrent.CountDownLatch;
2832
import java.util.concurrent.ExecutorService;
2933
import java.util.concurrent.Executors;
3034
import java.util.concurrent.TimeUnit;
3135
import java.util.concurrent.atomic.AtomicReference;
32-
3336
import javax.net.ServerSocketFactory;
3437
import javax.net.ssl.HostnameVerifier;
38+
import javax.net.ssl.SSLContext;
3539
import javax.net.ssl.SSLException;
3640
import javax.net.ssl.SSLServerSocket;
3741
import javax.net.ssl.SSLServerSocketFactory;
3842
import javax.net.ssl.SSLSession;
3943
import javax.net.ssl.SSLSocket;
40-
4144
import org.glassfish.jersey.SslConfigurator;
4245
import org.junit.jupiter.api.Test;
46+
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
47+
import org.junit.jupiter.api.extension.ExecutionCondition;
48+
import org.junit.jupiter.api.extension.ExtendWith;
49+
import org.junit.jupiter.api.extension.ExtensionContext;
4350

4451
import static org.junit.jupiter.api.Assertions.assertEquals;
4552
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -48,6 +55,7 @@
4855
/**
4956
* @author Petr Janouch
5057
*/
58+
@ExtendWith(SslFilterTest.DeprecatedTLSCondition.class)
5159
public abstract class SslFilterTest {
5260

5361
private static final int PORT = 8321;
@@ -531,4 +539,32 @@ void rehandshake() throws IOException {
531539
socket.startHandshake();
532540
}
533541
}
542+
543+
public static class DeprecatedTLSCondition implements ExecutionCondition {
544+
545+
@Override
546+
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
547+
Class<?> test = context.getTestClass().get();
548+
String required = null;
549+
if (test == SslFilterTLS1Test.class) {
550+
required = "TLSv1";
551+
} else if (test == SslFilterTLS11Test.class) {
552+
required = "TLSv1.1";
553+
}
554+
if (required != null) {
555+
try {
556+
SSLContext context1 = SSLContext.getInstance("TLS");
557+
context1.init(null, null, null);
558+
List<String> supportedProtocols = Arrays.asList(context1.getDefaultSSLParameters().getProtocols());
559+
if (!supportedProtocols.contains(required)) {
560+
return ConditionEvaluationResult.disabled("JDK does not support " + required);
561+
}
562+
} catch (KeyManagementException | NoSuchAlgorithmException e) {
563+
return ConditionEvaluationResult.disabled("JDK does not support TLS: " + e.getMessage());
564+
}
565+
}
566+
return ConditionEvaluationResult.enabled("JDK is valid to run " + test.getCanonicalName());
567+
}
568+
569+
}
534570
}

0 commit comments

Comments
 (0)