---
schema_version: "1"
id: d112d27883a4d40aad1149626847e39abcb60a02807621492ce9c9bcaa228612
title: FIPS 140-2 Compliance Support
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/mule-runtime/4.3/fips-140-2-compliance-support.md
canonical_url: https://docs.mulesoft.com/mule-runtime/4.3/fips-140-2-compliance-support
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 1c8c4156a64ef1a86c6a4c21bd6753131c62c0e043fe83b0f09532454552aa44
description: MuleSoft Documentation Site
release: "4.3"
latest: false
---
---
product: Mule Runtime
version: 4.3
keywords: fips, certifications, security
---

# FIPS 140-2 Compliance Support

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

The Mule 4 Runtime can be configured to run in a FIPS 140-2 certified environment. This includes all
Runtime connectors, such as HTTP connector. Note that Mule does not run in FIPS security mode by
default. There are two requirements:

- Have a certified cryptography module installed in your Java environment

- Adjust Mule Runtime settings to run in FIPS security mode

> [!NOTE] By default, Government Cloud is configured for FIPS 140-2, so you do not need to perform
> the following steps if you are using Government Cloud.
>
> If you are using Runtime Fabric, see
> [Enabling FIPS 140-2 Compliance Mode for Runtime Fabric](https://docs.mulesoft.com/runtime-fabric/latest/enable-fips-140-2-compliance)
> instead of performing these steps.

## Assumptions

This document assumes that you are familiar with
[FIPS 140-2](https://csrc.nist.gov/files/pubs/fips/140-2/upd2/final/docs/fips1402.pdf), the US
government security standard that requires that compliant parties use only cryptographic algorithms
and techniques that have been certified by NIST. This document also assumes that you have selected
and obtained a
[certified security provider](https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules).

## Setting Up a FIPS 140-2 Java Environment

Mule relies on the Java runtime to provide a FIPS-compliant security module, which is why the first
requirement is to have a FIPS 140-2 Java environment properly set up. If you are setting up your
system for FIPS compliance for the first time and you have not already configured a certified
security provider, you must first
[select and obtain one](https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules),
then set up your Java environment following the instructions specific to your selected provider.

Details for this process vary according to your selected security provider. Please refer to the
documentation for your security provider for complete instructions.

### Example: Setup Instructions Using Bouncy Castle Security Provider

The following example demonstrates how to install and configure Bouncy Castle security provider.

1.  Download the provider files from
    [the BouncyCastle web page](https://www.bouncycastle.org/download/bouncy-castle-java-fips/).

2.  Install the required JAR file into the `$JAVA_HOME/lib/ext` folder:

    ![FIPS-install-jars](/mulesoft/current/en-us/mule-runtime/4.3/_images/fips-install-jars.png)

3.  Register the security provider in the security properties file in the `$JAVA_HOME/lib/security`
    folder:

    1.  Open the `java.security` file to add your provider’s class (for example,
        `org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider`) as the first item in the list
        of providers.

    2.  Modify the line with SSL provider to use the Bouncy Castle provider
        (`security.provider.4=com.sun.net.ssl.internal.ssl.Provider BCFIPS`):

        ![FIPS-register-jar](/mulesoft/current/en-us/mule-runtime/4.3/_images/fips-register-jar.png)

4.  Adjust the numbering of the other security providers in the file so that they remain sequential.

    ![FIPS-register-jar-renumber](/mulesoft/current/en-us/mule-runtime/4.3/_images/fips-register-jar-renumber.png)

5.  Save your changes.

## Running Mule in FIPS Security Mode

After following the steps in [Setting Up a FIPS 140-2 Java Environment](#set_up_environment), set up
your Mule instances to work in a FIPS 140-2-compliant environment by updating the configuration of
the wrapper that launches the Mule app server.

1.  Open your `wrapper.conf` file (located in `$MULE_HOME/conf` folder).

2.  Uncomment the line that configures Mule to work in FIPS security mode (as shown). Be sure to
    replace the `<n>` with the next sequential number in your `wrapper.conf` file.

    ![FIPS-wrapper-conf-edit](/mulesoft/current/en-us/mule-runtime/4.3/_images/fips-wrapper-conf-edit.png)

3.  Save your changes.

When Mule launches again, the startup readout will indicate that FIPS security mode is enabled.

![FIPS-startup](/mulesoft/current/en-us/mule-runtime/4.3/_images/fips-startup.png)

With FIPS security mode enabled, Mule automatically restricts protocol negotiations to use only the
subset of approved cryptographic cipher suites. Any HTTPS connectors and any other connectors that
use a TLS security layer will be affected automatically by this restriction.

### Cluster Environment in FIPS mode

If you are running in FIPS mode with a Mule Runtime in a clustered environment, you should define an
encryption key for the cluster. See
[Cluster reference](https://docs.mulesoft.com/on-premises/latest/mule-high-availability-ha-clusters#cluster_fips) for
more insight.

## FIPS 140-2 Compliant Cipher Suites

The following list contains supported FIPS 140-2 compliant cipher suites. To configure the cipher
suite used by on-prem Mule installations, see
[Fine-Tuning SSL Connectors](#fine-tuning-ssl-connectors).

- TLS\_ECDHE\_ECDSA\_WITH\_AES\_128\_GCM\_SHA256

- TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256

- TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_GCM\_SHA384

- TLS\_DHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384

- TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384

- TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA384

- TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA384

- TLS\_ECDHE\_ECDSA\_WITH\_AES\_128\_CBC\_SHA

- TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA

- TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA

- TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA

## Fine-Tuning SSL Connectors

The Mule conf folder includes two files that allow you to fine-tune the configuration of SSL
connectors by manually setting which cipher suites Mule can use and which SSL protocols are allowed:

- `tls-default.conf` (Allows fine-tuning when Mule is not configured to run in FIPS security mode)

- `tls-fips140-2.conf` (Allows fine-tuning when Mule is running in FIPS security mode)

Open the relevant file and comment or uncomment items in the lists to manually configure the allowed
cipher suites and SSL protocols. If you make no changes to these files, Mule allows the configured
security manager to select cipher suites and protocols.

## Tips and Limitations

- The Bouncy Castle security provider bundled with the Mule Runtime distribution is not FIPS
  certified. When Mule starts in FIPS security mode, the Bouncy Castle provider is not registered or
  used.

- Not all encryption schemes and signatures included in
  [Mule Cryptography Module](https://docs.mulesoft.com/mule-runtime/4.3/securing#cryptography-module) and
  [Mule Secure Properties](https://docs.mulesoft.com/mule-runtime/4.3/secure-configuration-properties) configuration options are FIPS
  compliant. If your application is using an algorithm that is not approved for FIPS use, you will
  get an error at runtime that reads:

  Could not find encryption algorithm '<algorithm-name>'. You are running in FIPS mode, so please
  verify that the algorithm is compliant with FIPS.

- Keep in mind that your different environments might have different security configurations,
  including different encryption schemes and algorithm selections. So you might see this error in
  certain environments (but not others), depending on how they are set up.

## See Also

[Validated FIPS-2 Cryptographic Modules](https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules)

[Approved Cryptographic Algorithms](https://csrc.nist.gov/files/pubs/fips/140-2/upd2/final/docs/fips1402annexa.pdf)
