If the audit trails you want to index are encrypted, complete the following steps to make the decryption keys available for the indexer.
To make the decryption keys available for the external indexer
-
Obtain the RSA private key and copy it to the external indexer's host.
-
Use the indexer-keys-json utility to transform the private key to the required JSON format. When executed, the script asks for the path to the private key, and the password of the private key. After the conversion, the password is removed.
The utility automatically adds the private key to the /etc/indexer/indexer-keys.cfg keystore file. If you want to use a different keystore file, use the --keystore argument to specify another file. If the keystore already includes the private key you want to add, it will be ignored.
-
In the /opt/external-indexer/usr/bin/ folder, issue the following command: indexer-keys-json
-
Provide the absolute path to the private key. Alternatively, you can include this information as a parameter: indexer-keys-json --private-key <path-to-private-key>
-
If the key is password protected, enter the password to the private key.
-
To add additional keys, re-run the indexer-keys-json command.
-
You can now start the indexer service. For more information, see Starting the external indexer.
It is possible to use a hardware security module (HSM) or a smart card to store the decryption keys required for decrypting audit trails. An HSM or a smart card is a tamper-resistant physical, software, or cloud solution that can securely store digital keys used for authentication.
The main steps of configuring a hardware security module (HSM) or smart card to integrate with an external indexer are as follows:
-
Set up and test the environment.
-
Encrypt the PKCS#11 PIN.
To see examples of how to configure various HSM or smart card solutions that you wish to integrate with your external indexer(s), consult the following sections:
Detailed information about this topic
To access an HSM or smart card with the external indexer, a PKCS#11 shared library plugin must be used. In most cases, these libraries also need a background daemon or environment variables set. The PKCS#11 library must be accessible to the external indexer with a proper environment.
To set up the environment and test it, complete the following steps.
-
Load the environment for the indexer commands:
source /etc/indexer/external-indexer.env
-
Test your environment.
-
Option #1: Use the pkcs11-tool to test your environment:
-
List the available slots.
pkcs11-tool --modul <path-to-pkcs11-library> -L
-
List the objects in a slot.
pkcs11-tool --modul <path-to-pkcs11-library> -l --slot <id> -O
-
Option #2: Use the indexerworker with the log level set to dump to see the available keys:
indexerworker -l -v 7 --pkcs11-lib <path-to-pkcs11-library> --pkcs11-slot-id <id> --pkcs11-pin <pin>
-
Assuming that the environment is ready, the external indexer must be configured to use the PKCS#11 library. To do so, edit /etc/indexer/indexerworker.cfg as follows:
...
"settings": {
"pkcs11": {
"custom_password": false
"slots": [
{
"library": "<path-to-pkcs11-library>",
"slot_id": <slot-number>,
"pin": "<your-encrypted-PIN>"
}
]
}
}
...
The PKCS#11 PIN(s) must be protected by additional encryption. The indexerconfigcrypter tool must be used to encrypt the PIN(s).
To encrypt the PIN(s)
-
Encrypt the PIN.
The PINs can be encrypted with a custom passphrase or a default one is used if no custom passphrase is provided. A custom passphrase is more secure, but interaction is needed to start or restart the external-indexer service. Using a custom passphrase is supported on hosts running CentOS 7 or later.
Issue either of the following commands:
It is possible to configure multiple slots. In that case, the PINs must be encrypted using the same passphrase.
-
Update the "pkcs11" object in the indexerworker.cfg file.
The encrypted PINs must be stored in the "pin" field of the configuration file (in the example, a SoftHSM is used):
...
"pkcs11": {
"custom_password": true
"slots": [
{
"library": "/usr/lib/softhsm/libsofthsm.so",
"slot_id": 0,
"pin": "<your-encrypted-PIN>"
}
]
}
...