These steps are typically performed by the CryptoHub Admin on the device that will be hosting the OpenVPN Connect v3 application. See Underlying Responsibility Roles for more information.
Windows
Perform the following steps to install and configure FxPKCS11 on your OpenVPN Connect Windows host.Step 1: Extract the CryptoHub package and create the FxPKCS11 directory
Extract The endpoint zip file downloaded from your browser contains the following files:
Identifier-OpenVPN.zip into C:\Program Files\Futurex\fxpkcs11. If the fxpkcs11 folder doesn’t exist, it will be created automaticallyPowerShell
Update
-Path to the actual filepath, the filename of your CryptoHub package, and -DestinationPath to your preferred extraction location.The -Force flag creates the destination directory if it does not already exist and overwrites any existing files if it does.| Filename | Description |
|---|---|
PKCS11Manager.exe | Program to test the connection to the CryptoHub and perform basic functions through the FXPKCS11 module, such as logging in and generating random data. |
ca-chain.pem | CA certificate bundle |
client-cert.pem | Client TLS certificate |
client.p12 | Full Client PKI in encrypted PKCS #12 format (contains the CA chain, client certificate, and client private key) |
configTest.exe | Program to test the configuration and connection to the CryptoHub |
fxpkcs11.cfg | Configuration file for the Futurex PKCS #11 library |
fxpkcs11.dll | The Futurex PKCS #11 library file. |
CryptoHub <number>.cer | Auto-generated self-signed CA certificate used to issue client endpoint TLS certs (number is random) |
Futurex Test Root CA (ECC).cer or Futurex Test Root SSL CA.cer | Futurex Test Root CA for embedded Futurex Test TLS certs (ECC or RSA, based on the algorithm configured for the connection pair) |
Optional: Use a custom configuration location
By default,fxpkcs11.dll looks for fxpkcs11.cfg in C:\Program Files\Futurex\fxpkcs11. If you have moved fxpkcs11.cfg to a custom location, set the FXPKCS11_CFG environment variable to point to it.
For the current PowerShell session only:
PowerShell
PowerShell
If you choose the permanent option, you will need to restart your PowerShell session for the changes to take effect.
Optional: Use custom certificate paths
By default, the FxPKCS11 module expects certificate files to be in the same directory as thefxpkcs11.cfg file (whether at the default C:\Program Files\Futurex\fxpkcs11 location or your custom location via FXPKCS11_CFG). You can customize the paths to your certificate files directly in the fxpkcs11.cfg file by modifying the following settings:
PROD-TLS-KEY: Path to theclient.p12PKCS#12 filePROD-TLS-CA: Path to theCryptoHub 1234567890.cerfilePROD-TLS-CA: Path to theFuturex Test Root CA (ECC).cerorFuturex Test Root SSL CA.cerfile (depending on your CryptoHub connection type)
Make sure to enter the path without quotes, so an example path would be
C:\ProgramData\fxpkcs11\certs\CryptoHub 1234567890.cer instead of "C:\ProgramData\fxpkcs11\certs\CryptoHub 1234567890.cer" Step 2: Securing the PKCS #12 password
By default, the PKCS #12 password resides in plaintext insidefxpkcs11.cfg. To improve security, the recommended approach is to extract the password and store it separately, reducing the risk of accidental exposure.
On Windows, the recommended approach is to store the password as a system environment variable at the Machine scope, which persists across all sessions and is available to all shells and services without needing to be re-set.
Update the path to
fxpkcs11.cfg in the commands below if you have changed it from the default location.Close the current PowerShell session and open a new one with administrator privileges. Confirm the environment variable was set correctly:
PowerShell
Update the
<PROD-TLS-KEY-PASS> entry in fxpkcs11.cfg to reference the environment variable:PowerShell
Step 3: Comment out or remove the plaintext password in fxpkcs11.cfg
The <CRYPTO-OPR-PASS> entry in fxpkcs11.cfg contains the plaintext password used to authenticate the crypto user. Since we’re defining the password in the OpenVPN Connect application (required for this integration), comment out this line by adding a # at the beginning, or delete the line entirely from fxpkcs11.cfg.
To comment out the line:
PowerShell
Step 4: Create the pkcs11_modules directory and copy the Futurex PKCS #11 module for OpenVPN Connect to recognize it
Step 5: Validate with configTest (recommended)
If you see the message Windows protected your PC, click on More info, and click on Run anyway to allow the test to run.macOS
Perform the following steps to install and configure FxPKCS11 on your OpenVPN Connect macOS host.Step 1: Create the FxPKCS11 directory and extract the CryptoHub package
Create the following directory:
zsh
-p flag creates parent directories as needed and does not throw an error if the directory already exists.Extract the ZIP file.
zsh
Update the path to the actual filepath and filename of your CryptoHub package.
The endpoint zip file downloaded from your browser contains the following files:
| Filename | Description |
|---|---|
PKCS11Manager | Program to test the connection to the CryptoHub and perform basic functions through the FXPKCS11 module, such as logging in and generating random data. |
ca-chain.pem | CA certificate bundle |
client-cert.pem | Client TLS certificate |
client.p12 | Full Client PKI in encrypted PKCS #12 format (contains the CA chain, client certificate, and client private key) |
configTest | Program to test the configuration and connection to the CryptoHub |
fxpkcs11.cfg | Configuration file for the Futurex PKCS #11 library |
libfxpkcs11.dylib | The Futurex PKCS #11 library file. |
CryptoHub <number>.cer | Auto-generated self-signed CA certificate used to issue client endpoint TLS certs (number is random) |
Futurex Test Root CA (ECC).cer or Futurex Test Root SSL CA.cer | Futurex Test Root CA for embedded Futurex Test TLS certs (ECC or RSA, based on the algorithm configured for the connection pair) |
Remove the macOS quarantine attribute from the extracted files:
zsh
When files are downloaded through a browser, macOS attaches a
com.apple.quarantine extended attribute that triggers Gatekeeper to block them on first use. This command strips the attribute from the PKCS #11 library and helper binaries in one pass so that OpenVPN Connect can load the module and configTest can run without being blocked by macOS Privacy & Security warnings. Skipping this step will require you to manually approve each binary in [ System Settings ] > [ Privacy & Security ] and restart OpenVPN Connect before the integration will work.Optional: Use a custom configuration location
If you prefer to store the configuration file elsewhere, define the environment variable for the current terminal session:zsh
Optional: Use custom certificate paths
By default, the FxPKCS11 module expects certificate files to be in the same directory as thefxpkcs11.cfg file (whether at the default /etc/ location or your custom location via FXPKCS11_CFG). You can customize the paths to your certificate files directly in the fxpkcs11.cfg file by modifying the following settings:
PROD-TLS-KEY: Path to theclient.p12PKCS#12 filePROD-TLS-CA: Path to theCryptoHub 1234567890.cerfilePROD-TLS-CA: Path to theFuturex Test Root CA (ECC).cerorFuturex Test Root SSL CA.cerfile (depending on your CryptoHub connection type)
Step 2: Configure secrets (PKCS #12 password)
By default, the PKCS #12 password resides in plaintext insidefxpkcs11.cfg. To improve security, the recommended approach is to extract the password and store it separately, reducing the risk of accidental exposure.
On macOS, there are two ways to achieve this:
- Session environment variable: Temporary, only available for the current shell session. Must be re-set each time a new shell is opened.
- macOS Keychain: Permanent, persists across all sessions and is available to all shells and services without needing to be re-set.
Update the path to
fxpkcs11.cfg in the commands below if you have changed it from the default location.- Session environment variable
- macOS Keychain
Step 3: Comment out or remove the plaintext password in fxpkcs11.cfg
The <CRYPTO-OPR-PASS> entry in fxpkcs11.cfg contains the plaintext password used to authenticate the crypto user. Since we’re defining the password in the OpenVPN Connect application (required for this integration), comment out this line by adding a # at the beginning, or delete the line entirely from fxpkcs11.cfg.
If you remove the
<CRYPTO-OPR-PASS> line, store the password in a secure location of your choice for future reference.Step 4: Create a symlink to the Futurex PKCS #11 module for OpenVPN Connect to recognize it
Step 5: Validate with configTest (recommended)
Troubleshoot validation issues
IfconfigTest fails:
Check the FxPKCS11 log file:
- Default location: same directory as
fxpkcs11.cfg. - To customize, modify the
LOG-FILEsetting infxpkcs11.cfg.
Ensure that:
- The PKCS #11 PIN is correct.
fxpkcs11.cfgresides at/etc/fxpkcs11.cfg(or confirmFXPKCS11_CFGpoints to the correct location).- By default, all TLS files listed below must reside in the same directory as
fxpkcs11.cfg. If you customized the file paths infxpkcs11.cfg, place each file in its configured location instead:client.p12CryptoHub 1234567890.cerFuturex Test Root CA (ECC).cer(for ECC connections) orFuturex Test Root SSL CA.cer(for RSA connections)
PKCS11_P12has the correct value.

