pkcs11 Plugin
Purpose
The pkcs11 plugin for libstrongswan implements the PKCS#11 smart card
interface and can be used by both the IKE charon
daemon and the pki tool. Besides RSA keys the plugin also
supports ECDSA, DH/ECDH and RNG.
The plugin is disabled by default and can be enabled with the
./configure option
--enable-pkcs11
Configuration
The pkcs11 plugin is configured using the following options in the
charon.plugins.pkcs11
section of strongswan.conf:
| Key | Default | Description | 
|---|---|---|
modules  | 
This section lists available   | 
|
modules.<name>.path  | 
Full path to the shared object file of this   | 
|
modules.<name>.os_locking  | 
  | 
Whether OS locking should be enabled for this module  | 
modules.<name>.load_certs  | 
  | 
Whether the   | 
reload_certs  | 
  | 
Whether the   | 
use_dh  | 
  | 
Whether the   | 
use_ecc  | 
  | 
Whether the PKCS#11 modules should be used for   | 
use_hasher  | 
  | 
Whether the   | 
use_pubkey  | 
  | 
Whether the   | 
use_rng  | 
  | 
Whether the   | 
use_rsa_pss_hashers  | 
  | 
Whether the   | 
Example:
libstrongswan {
  # ...
  plugins {
    pkcs11 {
      modules {
        my-xy-module {
          path = /path/to/pkcs11/lib.so
        }
      }
    }
  }
}
Behavior
Certificates stored on smart cards are loaded automatically when the daemon is
started. If the PKCS#11 module supports hot-plugging, the certificates are
reloaded when a token gets inserted or removed later. The first certificate
matching the local identity
connections.<conn>.local<suffix>.id
in swanctl.conf will be used.
Specific certificates can also be loaded via swanctl.conf using sections of the form
connections.<conn>.local<suffix>.cert<suffix>
To access the private key you have to specify the associated PIN in swanctl.conf in section of the form
secrets.token<suffix>
Depending on the configuration reloading the secrets will prompt the user for the PIN.
[[NetworkManager#Smart-card-requirements|NetworkManager]] makes the use of smart cards with IKEv2 even easier.