> ## Documentation Index
> Fetch the complete documentation index at: https://docs.futurex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Install Futurex PKCS #11

> Installation steps for the Futurex PKCS #11 module, noting KMES-specific adjustments.

The following process installs only the HSM Version of the PKCS #11 configuration file. For KMES integrations, you need to replace the `<HSM>` section with a `<KMS>` section.

Perform the following steps to install Futurex **PKCS #11** on the same Windows or Linux server where you have or plan to install Apache HTTP Server:

## Windows

Perform the following steps to install Futurex PKCS #11 on Windows:

<Steps>
  <Step>
    In a Windows Environment, the easiest way to install the Futurex PKCS #11 module is by installing `FXTools`. Download `FXTools` from the Futurex portal.
  </Step>

  <Step>
    After you download it, run the `FXTools` installer as an administrator.
  </Step>

  <Step>
    By default, all tools are installed on the system. However, you can overwrite and choose not to install certain modules. The modules include the following options:

    <table>
      <thead>
        <tr>
          <th><em><strong>Module</strong></em></th>
          <th><em><strong>Description</strong></em></th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><strong>Futurex Client Tools</strong></td>
          <td>Command Line Interface (CLI) and associated SDK for both Java and C.</td>
        </tr>

        <tr>
          <td><strong>Futurex CNG Module</strong></td>
          <td>The Microsoft Next Generation Cryptographic Library.</td>
        </tr>

        <tr>
          <td><strong>Futurex Cryptographic Service Provider (CSP)</strong></td>
          <td>The Legacy Microsoft Cryptographic Library.</td>
        </tr>

        <tr>
          <td><strong>Futurex EKM Module</strong></td>
          <td>The Microsoft Enterprise Key Management library.</td>
        </tr>

        <tr>
          <td><strong>Futurex PKCS #11 Module</strong></td>
          <td>The Futurex PKCS #11 library and associated tools.</td>
        </tr>

        <tr>
          <td><strong>Futurex Secure Access Client</strong></td>
          <td>The Client connects a Futurex Excrypt Touch to a local laptop through USB or a remote Futurex device.</td>
        </tr>
      </tbody>
    </table>

    <Check>
      After starting the installation, all noted services are installed. If you select the Futurex Secure Access Client, the process also installs the Excrypt Touch driver. This tool might start minimized or run in the background.
    </Check>
  </Step>

  <Step>
    After installation is complete, you can find all services in the `C:\Program Files\Futurex` directory. The **CNG**, **CSP**, **EKM**, and **PKCS #11** modules all require configuration files located in their respective directories, which have a `.cfg` extension.
  </Step>
</Steps>

## Linux

Perform the following steps to install Futurex PKCS #11 on Linux:

<Steps>
  <Step>
    For a Linux Environment, download the tarball of the PKCS #11 binaries from the Futurex Portal.
  </Step>

  <Step>
    Extract the `.tar` file locally where you want to install the application on your file system. For the Futurex PKCS #11 module to be accessible system-wide, an administrative user must extract it to `/usr/local/bin`. If only the current user needs to use the module, then you can extract it to `$HOME/bin`.

    The extracted content of the `.tar` file is a single fxpkcs11 directory. Inside the fxpkcs11 directory are the following files and directories (only files and folders relevant to the installation process are included):

    <table>
      <thead>
        <tr>
          <th><em><strong>Filename/Directory</strong></em></th>
          <th><em><strong>Description</strong></em></th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>fxpkcs11.cfg</code></td>
          <td>PKCS #11 configuration file to use for HSM integrations.</td>
        </tr>

        <tr>
          <td><code>fxpkcs11-kms.cfg</code></td>
          <td>PKCS #11 configuration file to use for KMES Series 3 integrations.</td>
        </tr>

        <tr>
          <td><code>x86/</code></td>
          <td>This folder contains the module files for 32-bit architecture.</td>
        </tr>

        <tr>
          <td><code>x64/</code></td>
          <td>This folder contains the module files for 64-bit architecture.</td>
        </tr>
      </tbody>
    </table>

    <Note>
      The `x86` and `x64` directories contain multiple directories named for the specific OpenSSL versions. These OpenSSL directories contain the PKCS #11 module files, built with the respective OpenSSL versions.
    </Note>

    ***

    <table>
      <thead>
        <tr>
          <th><code>configTest</code></th>
          <th>Program to test configuration and connection to the HSM.</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>libfxpkcs11.so</code></td>
          <td>PKCS #11 Library file.</td>
        </tr>

        <tr>
          <td><code>PKCS11Manager</code></td>
          <td>Program to test connection and manage the HSM through the PKCS #11 library.</td>
        </tr>
      </tbody>
    </table>
  </Step>

  <Step>
    Because the `configTest` and `PKCS11Manager` programs expect to find the PKCS #11 configuration file in the `/etc` directory, you must either move the file from the `/usr/local/bin/fxpkcs11` directory to the `/etc` directory or set the **FXPKCS11\_CFG** environment variable to point to the PKCS #11 configuration file.

    If you're using the KMES version of the PKCS #11 configuration file (`fxpkcs11-kms.cfg`), you must rename the file to `fxpkcs11.cfg`.
  </Step>
</Steps>
