You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/ROOT/pages/fips-140-3-compliance-support.adoc
+49-39Lines changed: 49 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,46 +15,42 @@ Mule doesn't run in FIPS security mode by default. To enable it, you must:
15
15
16
16
FIPS 140-3 support requires:
17
17
18
-
* Mule 4.10 or later
19
-
+
20
-
For earlier versions of Mule runtime, use xref:fips-140-2-compliance-support.adoc[FIPS 140-2 Compliance Support] which requires:
18
+
* Mule 4.10 or later (for earlier versions of Mule runtime, use xref:fips-140-2-compliance-support.adoc[FIPS 140-2 Compliance Support])
21
19
* Java 17 or later
22
20
* FIPS license from the license `.zip` file provided by MuleSoft (the non-FIPS license isn't valid for FIPS mode)
23
21
24
22
== Assumptions
25
23
26
24
This document assumes you're familiar with https://csrc.nist.gov/publications/detail/fips/140/3/final[FIPS 140-3], the US government security standard that requires that compliant parties use only cryptographic algorithms and techniques that have been certified by NIST.
27
25
28
-
These instructions use Bouncy Castle 2.0.0, the recommended FIPS 140-3 certified security provider for Mule runtime. If you use a different https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules[certified security provider], refer to that provider's documentation for configuration instructions.
26
+
These instructions use BC-FJA, the recommended FIPS 140-3 certified security provider for Mule runtime (https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4943[Certificate #4943]). If you use a different https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules[certified security provider], refer to that provider's documentation for configuration instructions.
29
27
30
28
[[set_up_environment]]
31
-
== Installing Bouncy Castle Security Provider
32
29
33
-
Mule runtime uses Bouncy Castle 2.0.0 as its FIPS 140-3 certified cryptography provider.
30
+
== Installing BC-FJA Security Provider
31
+
32
+
Mule runtime uses BC-FJA 2.1.2 as its FIPS 140-3 certified cryptography provider.
34
33
35
34
=== Installation Steps
36
35
37
-
These instructions show how to install and configure Bouncy Castle security provider in Java 17 or later.
36
+
These instructions show how to install and configure BC-FJA security provider in Java 17 or later.
38
37
39
38
. Verify that you're using Java 17 or later and `JAVA_HOME` is set.
40
-
. Download the Bouncy Castle 2.0.0 provider files from https://www.bouncycastle.org/fips-java/[the BouncyCastle website].
41
-
. Copy the required JAR files to the `$MULE_HOME/lib/boot` folder:
39
+
. Download the BC-FJA 2.1.2 provider files from https://www.bouncycastle.org/fips-java/[the BouncyCastle website].
40
+
. Copy the required JAR files to the `${MULE_HOME}/lib/boot` folder:
42
41
+
43
42
----
44
-
bc-fips-2.0.0.jar
45
-
bctls-fips-2.0.19.jar
46
-
bcpkix-fips-2.0.7.jar
47
-
bcutil-fips-2.0.3.jar
48
-
bcpg-fips-2.0.9.jar
49
-
bcjmail-fips-2.0.5.jar
43
+
bc-fips-2.1.2.jar
44
+
bcutil-fips-2.1.5.jar
45
+
bctls-fips-2.1.22.jar
46
+
bcpkix-fips-2.1.10.jar
50
47
----
51
48
+
52
-
. Configure the security providers in the `$JAVA_HOME/conf/security/java.security` file:
49
+
. Configure the security providers in the `${JAVA_HOME}/conf/security/java.security` file:
. If you're using a clustered environment, also add the cluster encryption key:
@@ -92,9 +91,9 @@ For more information about clustering in FIPS mode, see xref:mule-high-availabil
92
91
+
93
92
. Save your changes and start Mule runtime.
94
93
95
-
[NOTE]
94
+
[IMPORTANT]
96
95
--
97
-
Starting with Mule 4.10, BCFKS is the default keystore type. Setting `mule.keystore.type=BCFKS` in your `wrapper.conf` file isn't required.
96
+
In FIPS-compliant environments, all keystores and truststores typically require BCFKS format. However, you may need to support legacy JKS stores, such as the default Java truststore at `${JAVA_HOME}/lib/security/cacerts`. See <<FIPS 140-3 Compliant Keystore Formats>> for configuration options.
98
97
--
99
98
100
99
When Mule launches, the startup logs show that FIPS 140-3 security mode is enabled. Mule automatically restricts protocol negotiations to use only approved cryptographic cipher suites.
@@ -131,42 +130,53 @@ These cipher suites are enabled by default when running Mule in FIPS 140-3 mode.
131
130
132
131
[NOTE]
133
132
--
134
-
These cipher suites are configured in the `$MULE_HOME/conf/tls-fips140-3.conf` file. FIPS 140-3 requires support for TLS 1.3 and TLS 1.2. Earlier TLS versions aren't supported.
133
+
These cipher suites are configured in the `${MULE_HOME}/conf/tls-fips140-3.conf` file. FIPS 140-3 requires support for TLS 1.3 and TLS 1.2. Earlier TLS versions aren't supported.
135
134
--
136
135
137
136
== FIPS 140-3 Compliant Keystore Formats
138
137
139
-
Keystores or truststores in Mule apps are usually formatted as `PKCS12` or `JKS`. These formats aren't FIPS compliant. For compliance, convert them to `BCFKS` format:
140
-
141
-
. Download the `bc-fips-2.0.0.jar` file from the https://www.bouncycastle.org/download/bouncy-castle-java-fips/[Bouncy Castle website].
142
-
. Use this example command to convert a keystore to `BCFKS` format:
138
+
Keystores or truststores in non-FIPS environments are typically formatted as `PKCS12` or `JKS`. Since these formats are not FIPS-compliant, they need to be converted to `BCFKS` format.
143
139
140
+
. Use this example command to convert a `JKS` keystore to `BCFKS` format. If the source keystore is `PKCS12`, set `-srcstoretype` to `PKCS12` in the `keytool` command:
141
+
+
144
142
----
145
-
BC_FIPS_JAR=${BC_PATH}/bc-fips-2.0.0.jar # Replace with a correct path
146
-
OLD_KEYSTORE="keystore.jks" # Replace with the keystore to convert
147
-
OLD_PASSWD="changeit" # Replace with the keystore password
148
-
NEW_KEYSTORE="keystore.bcfks" # Replace with the new keystore
149
-
NEW_PASSWD="changeit" # Replace with the new keystore password
143
+
BC_FIPS_JAR=${MULE_HOME}/lib/boot/bc-fips-2.1.2.jar # Replace with a correct path
144
+
OLD_KEYSTORE="keystore.jks" # Replace with the keystore to convert
145
+
OLD_PASSWD="changeit" # Replace with the keystore password
146
+
NEW_KEYSTORE="keystore.bcfks" # Replace with the new keystore
147
+
NEW_PASSWD="changeit" # Replace with the new keystore password
. A special case is the truststore of the JVM, which is a `JKS` store by default, located at `${JAVA_HOME}/lib/security/cacerts`. There are two approaches to handle this special case:
165
+
** Convert to BCFKS
166
+
*** Convert the `JKS` store to `BCFKS` using the `keytool` command as described in <<FIPS 140-3 Compliant Keystore Formats>>, pointing OLD_KEYSTORE to `${JAVA_HOME}/lib/security/cacerts` and NEW_KEYSTORE to `${JAVA_HOME}/lib/security/cacerts.bcfks`
167
+
*** Add the following properties to your `wrapper.conf` file:
0 commit comments