Skip to content

Commit a17a00e

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

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,13 +79,16 @@ 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
sslContextBuilder.protocols(getEnabledProtocols(config));
8488
Iterable<String> enabledCiphers = getCipherSuites(config);
8589
if (enabledCiphers != null) {
8690
sslContextBuilder.ciphers(enabledCiphers);
8791
}
88-
sslContextBuilder.sslProvider(getSslProvider(config));
8992

9093
SslContext sslContext1 = sslContextBuilder.build();
9194

@@ -120,14 +123,17 @@ public SslContext createNettySslContextForServer(ZKConfig config, KeyManager key
120123
sslContextBuilder.trustManager(trustManager);
121124
}
122125

123-
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
126+
SslProvider sslProvider = getSslProvider(config);
127+
sslContextBuilder.sslProvider(sslProvider);
128+
if (sslProvider == SslProvider.OPENSSL || sslProvider == SslProvider.OPENSSL_REFCNT) {
129+
sslContextBuilder.enableOcsp(config.getBoolean(getSslOcspEnabledProperty()));
130+
}
124131
sslContextBuilder.protocols(getEnabledProtocols(config));
125132
sslContextBuilder.clientAuth(getClientAuth(config).toNettyClientAuth());
126133
Iterable<String> enabledCiphers = getCipherSuites(config);
127134
if (enabledCiphers != null) {
128135
sslContextBuilder.ciphers(enabledCiphers);
129136
}
130-
sslContextBuilder.sslProvider(getSslProvider(config));
131137

132138
SslContext sslContext1 = sslContextBuilder.build();
133139

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)