Skip to main content
Deprecated: The OpenSSL ENGINE API is deprecated in OpenSSL 3.x. This guide documents the legacy engine-based approach using libp11 and OpenSC. For new deployments, use the pkcs11-provider from Latchset instead. See Install and configure OpenSSL pkcs11-provider for the recommended approach.
This section describes how to install and configure the libp11, OpenSC, and PKCS11 engine plugin for the OpenSSL library. The following list provides an overview of these libraries:
LibraryDescription
libp11Provides a high-level (compared to the PKCS #11 library) interface for accessing PKCS #11 objects. It integrates with applications that use OpenSSL.
OpenSCProvides a set of libraries and utilities to work with smart cards. It focuses on cards that support cryptographic operations and facilitates their use in security applications such as authentication, mail encryption, and digital signatures.
PKCS11 engine pluginAn engine plugin for the OpenSSL library that allows accessing PKCS #11 modules in a semi-transparent way.

Install libp11 and OpenSC

Perform the following instructions to install libp11 and OpenSC on the supported operating systems:

Ubuntu or Debian

Perform the following steps to install libp11 and OpenSC on Ubuntu or Debian:
1
In a terminal, run the following sequence of commands to install libp11 and OpenSC:
Shell
sudo apt update
sudo apt install libengine-pkcs11-openssl
sudo apt install opensc

Red Hat or CentOS

Perform the following steps to install libp11 and OpenSC on Red Hat or CentOS:
1
In a terminal, run the following sequence of commands to install libp11 and OpenSC:
Shell
sudo yum check-update
sudo yum install openssl-pkcs11
sudo yum install opensc

Edit the OpenSSL configuration file

Perform the following steps to edit the OpenSSL configuration file for Ubuntu/Debian-based Linux distributions and Red Hat/CentOS-based distributions:
1
Confirm the location of the pkcs11.so file on your system by running the following command in a terminal as root:
Shell
find / name "pkcs11.so"
2
Run the following command to determine the location of the OpenSSL configuration file for the logged-in user:
Shell
openssl version -d
3
Open in a text editor to edit the openssl.cnf file for the logged-in user identified in the previous command. If you prefer, you can edit the global OpenSSL configuration file, /etc/ssl/openssl.cnf.
4
Add the following line at the top of the file, before any sections:
None
openssl_conf = openssl_init
5
Add the following text, based on your operating system, at the bottom of the file after modifying the MODULE_PATH and PIN lines:

Ubuntu 18

Add the following lines on Ubuntu 18:
None
[openssl_init] 
engines=engine_section 
[engine_section] 
pkcs11 = pkcs11_section 
[pkcs11_section] 
engine_id = pkcs11 
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so 
MODULE_PATH = /usr/local/bin/fxpkcs11/libfxpkcs11.so
init = 0

CentOS 8

Add the following lines on CentOS 8:
None
[openssl_init] 
engines=engine_section 
[engine_section] 
pkcs11 = pkcs11_section 
[pkcs11_section] 
engine_id = pkcs11 
dynamic_path = /usr/lib64/engines-1.1/pkcs11.so 
MODULE_PATH = /usr/local/bin/fxpkcs11/libfxpkcs11.so
init = 0
The MODULE_PATH must be set to the location of the Futurex PKCS #11 module installation on your system.
The PIN field must contain the password of the identity created on the KMES Series 3 for your integration.