Mark created ZOOKEEPER-4832:
-------------------------------

             Summary: Better guidance on how to configure zookeeper for FIPS
                 Key: ZOOKEEPER-4832
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4832
             Project: ZooKeeper
          Issue Type: Improvement
          Components: documentation
            Reporter: Mark


Hi there.

We're attempting to work out how to produce a zookeeper package and image which 
is FIPS compliant.

We've found multiple references in the code base to `zookeeper.fips-mode`, 
however on closer inspection this is very misleading, as it is not enabling any 
FIPS specific settings, neither does it enable zookeeper for FIPS mode. 
Instead, it just looks to disable 'ZKTrustManager'.

It would be great to get some guidance here, and possibly an article / docs 
update with configuration details.

For example, when working with Java applications, there are usually multiple 
layers to building a FIPS image, including:
 * Configuring OpenSSL for FIPS mode
 * Configuring a FIPS compliant JDK/JRE on the host, such as bcfips (FIPS 
BouncyCastle)
 * Creating a suitable java.security file to restrict usage to non-approved 
FIPS providers and crypto algorithms
 * Updating the CLASSPATH to reference the bcfips jars
 * Refactoring the code base - removing any references to non-FIPS crypto 
usage, such as non-FIPS bouncycastle, and potentially any other crypto libs
 * Remove any usage of unapproved crypto algorithms (i.e des, md5 etc)

Some questions:
 # Do you have any more info you can share on how to properly configure 
zookeeper for FIPS?
 # Zookeeper seems to reference bouncycastle in some tests - can these be 
ignored safely? Any other usage of non-FIPS bouncycastle elsewhere?
 # Are there any other crypto libraries used which may be a concern?
 # Are there any dependencies used which themselves use non-FIPS crypto?
 # Are the references to non-approved crypto algorithms in critical path?

 

{*}Expanding on question 2 above{*}, this is the only references i could seem 
to find for bouncycastle:

```

zookeeper-server/src/test/java/org/apache/zookeeper/common/BaseX509ParameterizedTestCase.java
zookeeper-server/src/test/java/org/apache/zookeeper/common/X509TestContext.java
zookeeper-server/src/test/java/org/apache/zookeeper/common/X509TestHelpers.java

```

*Expanding on question 5:*

md5 usage:

```zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java
zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/DigestLoginModule.java
zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/SaslServerCallbackHandler.java
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumServerCallbackHandler.java
zookeeper-server/src/main/java/org/apache/zookeeper/util/SecurityUtils.java

```

des usage:

```

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

```

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to