stoty commented on code in PR #2289:
URL: https://github.com/apache/zookeeper/pull/2289#discussion_r2260852403


##########
zookeeper-server/src/main/java/org/apache/zookeeper/common/X509Util.java:
##########
@@ -541,21 +548,32 @@ public static X509TrustManager createTrustManager(
         boolean ocspEnabled,
         final boolean serverHostnameVerificationEnabled,
         final boolean clientHostnameVerificationEnabled,
-        final boolean fipsMode) throws TrustManagerException {
+        final boolean fipsMode,
+        final SslRevocationEnabled revocationEnabled) throws 
TrustManagerException {
         if (trustStorePassword == null) {
             trustStorePassword = "";
         }
         try {
             KeyStore ts = loadTrustStore(trustStoreLocation, 
trustStorePassword, trustStoreTypeProp);
             PKIXBuilderParameters pbParams = new PKIXBuilderParameters(ts, new 
X509CertSelector());
             if (crlEnabled || ocspEnabled) {
-                pbParams.setRevocationEnabled(true);
+                if (revocationEnabled == SslRevocationEnabled.LEGACY) {
+                    pbParams.setRevocationEnabled(true);
+                }
                 System.setProperty("com.sun.net.ssl.checkRevocation", "true");
                 System.setProperty("com.sun.security.enableCRLDP", "true");
                 if (ocspEnabled) {
                     Security.setProperty("ocsp.enable", "true");
                 }
             } else {
+                if (revocationEnabled == SslRevocationEnabled.LEGACY) {
+                    pbParams.setRevocationEnabled(false);
+                }
+            }
+
+            if (revocationEnabled == SslRevocationEnabled.TRUE) {
+                pbParams.setRevocationEnabled(true);
+            } else if (revocationEnabled == SslRevocationEnabled.FALSE) {

Review Comment:
   > `revocationEnabled` is default to `true` in java since java-8. In old 
path, it clears `revocationEnabled`.
   
   That's only true sometimes.
   It is enabled by default in SunJCE, but (only by looking at the code, not 
tested) it is disabled by default in BouncyCastle. There also other 
Cryptography providers where the behaviour may be different.
   
   > 
   > I don't think it deserves `JAVA_DEFAULT` for a public default. I think we 
could shape the candidates:
   > 
   > 1. `legacy`:  behaves same as old, this should be the default in case of 
backport.
   > 2. `true` or `false` to enable/disalbe revocation. `true` could be the 
default.
   
   The case for having a default NoOp option is that there are already 
mechanisms and defaults in the JVM that can be used to set this up.
   
   There can be any number of HTTP clients (and servers) in an application that 
includes the ZK client, and a user may want to threat these in a unified way.
   
   By not exposing a JVM default options, we force the user to always 
separately consider the ZK clients.
   (Servers are less of a problem, as those are standlone processes)
   
   "Yes, you have set up your JVM system properties to enable/disable CRL 
globally, but now you also need to make a separate change for the ZK config 
anyway" is not user / admin friendly.
   
   My preference would be defaulting to "java_default" for 3.10 and "legacy" 
for backports.
   
   > 
   > * 
https://devdocs.io/openjdk~8/java/security/cert/pkixparameters#setRevocationEnabled-boolean-
   > * 
https://devdocs.io/openjdk~21/java.base/java/security/cert/pkixparameters#setRevocationEnabled(boolean)
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@zookeeper.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to