FIPS (Federal Information Processing Standards) are a set of standards that describe document processing, encryption algorithms and other information technology standards for use within non-military government agencies and by government contractors and vendors who work with the agencies.
FIPS 140-2 specifies validated encryption algorithms and modules. Splunk can operate in FIPS mode to meet compliance requirements.
| Splunk Version | FIPS Support, Splunkd | FIPS Support, KV Store | OpenSSL version |
| 7.3.2 | Yes | No | |
| 9.x | Yes | No | OpenSSL 1.0.2 |
| 9.4.2 | Yes | Yes, requires Mongo v7.0 | OpenSSL 1.0.2 with FIPS 140-2 module |
| 10.0 | Yes | Yes, requires Mongo v7.0 | OpenSSL 3.0 (FIPS 140-2 & 140-3 compliant) |
If FIPS is not enabled before Splunk starts the first time, it cannot be enabled later, not even with an upgrade of Splunk. The only solution is to uninstall Splunk entirely and start over.
FIPS must be enabled at the OS level before Splunk has run for the first time in order for Splunk itself to run in FIPS mode. If the OS and Splunk are not in FIPS mode the first time Splunk runs, the only way to run it in FIPS mode is to completely uninstall Splunk. Splunk must be re-installed without starting it, then ensure OS is in FIPS mode and configure Splunk to run in FIPS mode
fips-mode-setup --check
sudo fips-mode-setup --enable
sudo reboot now
fips-mode-setup --check
Splunk will start in FIPS mode on Windows if OPENSSL_FIPS=1 is set in splunk-launch.conf before first startup. The following checks are optional:
Two methods available:
gpedit.msc.PS C:\Windows\system32> [System.Security.Cryptography.Cryptoconfig]::AllowOnlyFipsAlgorithms
If the server is in FIPS mode, the output will be True. If it is not, the output will be False.splunk-launch.conf:OPENSSL_FIPS=1
In Windows, Splunk must be installed using the CLI, as the GUI installer does not offer FIPS mode as an install option.
msiexec.exe /i Splunk.msi SPLUNKUSERNAME=admin SPLUNKPASSWORD=<password> LAUNCHSPLUNK=0 /quiet
REQUIRED: Add the following to splunk-launch.conf:
OPENSSL_FIPS=1
This command captures whether Splunk and the OS were in FIPS mode the first time Splunk ever ran.
splunk show fips-mode
From command line:
curl -s -k -u https://localhost:(mgmt_port)/services/server/info | grep fips_mode
From Search
"| rest splunk_server=local /services/server/info | fields fips_mode"
Splunk recommends using the OpenSSL that comes with Splunk to create FIPS compliant Certs, and to avoid using your own openssl.cnf configuration file. Splunk is automatically configured to produce correct FIPS-enabled certificates out of the box.Confirm Splunk's Openssl version and whether it is FIPS-enabled
$SPLUNK_HOME/bin/splunk cmd openssl version
echo $OPENSSL_FIPS
export OPENSSL_FIPS=1
printenv | grep SSL
If it is not set or points to another path (such as /home/built/build-home/openssl/openssl.cnf, to correct it, run this command:
export OPENSSL_CONF="/opt/openssl/openssl.conf"
sslPassword is not configured (an encrypted key is optional for the KV Store, but if used, sslPassword must be defined):KVStoreConfigurationProvider - KV Store sslPassword is not specified. Please set it in the [kvstore] stanza in your server.conf
SSL peer certificate validation failed: unable to get issuer certificate SSLHandshakeFailed
server.conf/[kvstore] contains values for both caCertFile and serverCert, this may stop errors related to Mongo initialization. However, if the .pem or .crt file used does not have a password and sslPassword is:
sslPassword in splunkd.log as shown above, but mongod.log shows no errors.mongod.log:SSL peer certificate validation failed: unable to get issuer certificate SSLHandshakeFailed: SSL peer certificate validation failed: unable to get issuer certificate. Ending connection from 127.0.0.1:34340 (connection id: 617)
These messages confirm a mismatch between SSL expectation and actual cert chain integrity.
serverAuth and clientAuth communication.
Error receiving request from client: SSLHandshakeFailed: SSL peer certificate validation failed: unsupported certificate purpose. Ending connection from x.x.x.x:xxxx (connection id: xx)
CLI command to check server cert purpose:
$SPLUNK_HOME/bin/splunk cmd openssl x509 -noout -in </path/to/server-certificate.pem> -purpose | grep SSL
Output should look like this, with "Yes" at both "SSL client" and "SSL server". An incorrect cert will typically have a "Yes" only at "SSL Server". Such certificates must be rebuilt to be "dual purpose".
Certificate purposes:
SSL client : Yes
SSL client CA : No
SSL server : Yes
SSL server CA : No
For any version higher than 7.3.1, the openssl FIPS crypto libraries are included with the Splunk install packages.
Regardless of whether your Splunk environment uses default or custom certificates, the following fields must be defined in server.conf for the KV Store:
[kvstore]
serverCert = </path/to/server/cert.pem>
sslPassword = <password>
Similar to Splunk Web, the KV Store does not require an encrypted private key (password protected key), so sslPassword is required only if your certificate uses an encrypted private key. However, most Splunk customers use the same certificate for the KV Store as for Splunkd. And Splunkd DOES require an encrypted password. If the certificate built for your KV Store is password-protected, sslPassword is required. Leaving it undefined will prevent KVStore from starting. The examples here assume the same CA file is used for both splunkd and kvstore even if separate certificates are used. If your KV Store certificate uses a different CA file, then it must be included in [kvstore] also, with the caCertFile attribute.
Example full configuration in server.conf:
[sslConfig] serverCert = /opt/splunk/etc/auth/mycerts/myServerCertificateCombined.pem sslPassword = <password> sslRootCAPath = /opt/splunk/etc/auth/mycerts/myCertAuthCertificate.pem[kvstore] serverCert = /opt/splunk/etc/auth/mycerts/myServerCertificateCombined.pem sslPassword = <password
NOTE: If $SPLUNK_HOME path does not work, try to use the full path as shown above.
One of the most common mistakes during KVStore + SSL + FIPS setup is misidentifying whether a private key is encrypted. The simplest way to tell if a private key requires sslPassword is by looking at the file header:
-----BEGIN PRIVATE KEY-----
...<key data>...
-----END PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
...<encrypted key data>...
-----END RSA PRIVATE KEY-----
If your key begins with RSA PRIVATE KEY, it's encrypted and will fail to start unless sslPassword is correctly defined in the [kvstore] stanza of server.conf.

Splunk KB Article on how to implement FIPS, as it walks through the process for creating self-signed certificates. Much of the process applies also to generating the .req files for submission to 3rd party or an internal authority.
Splunk Documentation:
Splunk Community Posts
Splunk KB Articles
Other links
| Revision | Publish Date | Comments |
|---|---|---|
1.0 |
29-Sep-2026
|
Initial Release |