OpenSSL is an open-source tool for using the Secure Socket Layer (SSL) and Transport Layer Security (TLS) protocols for Web Authentication. It offers cryptographic functions to support SSL/TLS protocols.
It allows users to perform various SSL-related tasks, including CSR (Certificate Signing Request) and private key generation, as well as SSL certificate installation. Most of the Linux distributions come with pre-compiled OpenSSL, but if you are on a Windows system, you can get it through manual installation.
OpenSSL has an abstraction layer called the "engine," which can delegate cryptographic operations to other software or hardware.
Libp11 provides an engine_pkcs11 that tries to fit the PKCS#11 API within the OpenSSL engine API. That is, it provides a gateway between PKCS#11 modules and the OpenSSL engine API.