Skip to content

Commit 3024190

Browse files
committed
ZOOKEEPER-4940: Enabling zookeeper.ssl.ocsp with JRE TLS provider errors out
1 parent e5dd60b commit 3024190

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

zookeeper-server/src/main/java/org/apache/zookeeper/common/ClientX509Util.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,11 @@ public SslContext createNettySslContextForClient(ZKConfig config)
7979
sslContextBuilder.trustManager(tm);
8080
}
8181

82-
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
82+
SslProvider sslProvider = getSslProvider(config);
83+
sslContextBuilder.sslProvider(sslProvider);
84+
if (sslProvider == SslProvider.OPENSSL || sslProvider == SslProvider.OPENSSL_REFCNT) {
85+
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
86+
}
8387
String[] enabledProtocols = getEnabledProtocols(config);
8488
if (enabledProtocols != null) {
8589
sslContextBuilder.protocols(enabledProtocols);
@@ -88,7 +92,6 @@ public SslContext createNettySslContextForClient(ZKConfig config)
8892
if (enabledCiphers != null) {
8993
sslContextBuilder.ciphers(enabledCiphers);
9094
}
91-
sslContextBuilder.sslProvider(getSslProvider(config));
9295

9396
SslContext sslContext1 = sslContextBuilder.build();
9497

@@ -123,7 +126,11 @@ public SslContext createNettySslContextForServer(ZKConfig config, KeyManager key
123126
sslContextBuilder.trustManager(trustManager);
124127
}
125128

126-
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
129+
SslProvider sslProvider = getSslProvider(config);
130+
sslContextBuilder.sslProvider(sslProvider);
131+
if (sslProvider == SslProvider.OPENSSL || sslProvider == SslProvider.OPENSSL_REFCNT) {
132+
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
133+
}
127134
String[] enabledProtocols = getEnabledProtocols(config);
128135
if (enabledProtocols != null) {
129136
sslContextBuilder.protocols(enabledProtocols);
@@ -133,7 +140,6 @@ public SslContext createNettySslContextForServer(ZKConfig config, KeyManager key
133140
if (enabledCiphers != null) {
134141
sslContextBuilder.ciphers(enabledCiphers);
135142
}
136-
sslContextBuilder.sslProvider(getSslProvider(config));
137143

138144
SslContext sslContext1 = sslContextBuilder.build();
139145

zookeeper-server/src/test/java/org/apache/zookeeper/common/X509UtilTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,20 @@ public void testCreateSSLContext_validCustomSSLContextClass(
740740
assertEquals(SSLContext.getDefault(), sslContext);
741741
}
742742

743+
@ParameterizedTest
744+
@MethodSource("data")
745+
public void testCreateSSLContext_ocspWithJreProvider(
746+
X509KeyType caKeyType, X509KeyType certKeyType, String keyPassword, Integer paramIndex)
747+
throws Exception {
748+
init(caKeyType, certKeyType, keyPassword, paramIndex);
749+
ZKConfig zkConfig = new ZKConfig();
750+
try (ClientX509Util clientX509Util = new ClientX509Util();) {
751+
zkConfig.setProperty(clientX509Util.getSslOcspEnabledProperty(), "true");
752+
// Must not throw IllegalArgumentException
753+
clientX509Util.createSSLContext(zkConfig);
754+
}
755+
}
756+
743757
private static void forceClose(Socket s) {
744758
if (s == null || s.isClosed()) {
745759
return;

0 commit comments

Comments
 (0)