> ## 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

> Procedural guide to install the Futurex PKCS #11 module on Windows or Linux for use with Java Jarsigner.

<Warning>
  You must install the Futurex PKCS #11 module on the computer or server where you plan to install Java Jarsigner.
</Warning>

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 your Windows or Linux server:

## 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 Libary.</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 to a remote Futurex device.</td>
        </tr>
      </tbody>
    </table>

    <Check>
      After starting the installation, all noted services are installed. If you selected the Futurex Secure Access Client, the Futurex Excrypt Touch driver is also installed (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 corresponding directory with a `.cfg` extension.
  </Step>
</Steps>

## 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 needs extract it in `/usr/local/bin`. If only the current user needs to use the module, then you can extract it in `$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 look for 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.

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

## Java and OpenSSL Installed on the Same Device

If Java and OpenSSL will be installed on the same system, please reference [**Using OpenSSL and Java**](docId:ZjZ6UyDmp2hEttE6Rls5e).
