如何在 Ubuntu 16.04 LTS 上安装和使用 SoftHSM
在此页
- 依赖关系
- 安装
- 配置文件
- 初始化软令牌
- 备份
- 带有 OpenSC 实用程序的 SoftHSM
硬件/软件令牌或硬件安全模块 (HSM) 与不同的应用程序一起使用,以存储加密密钥(公钥和私钥)和证书。例如,NitroKey 和 Smartcard-HSM 是一对 HSM。但是,也存在一些软件替代方案,例如 SoftHSM(v2),具体而言,它正在作为 OpenDNSSEC 项目的一部分进行开发。
SoftHSM 基本上是一种可通过 PKCS #11 接口访问的加密存储的实现。 PKCS#11 接口用于通信或访问加密设备,例如 HSM(硬件安全模块)和智能卡。 HSM 设备的主要目的是在不向其他人泄露私钥的情况下生成加密密钥和签名/加密信息。
为了让您快速了解背景,OpenDNSSEC 用户不可能购买新的硬件令牌来存储加密密钥。因此,为了解决这个问题,OpenDNSSEC 开始提供“SoftHSM”,这是一种具有 PKCS#11 接口的通用加密设备的软件实现。 SoftHSM 旨在满足 OpenDNSSEC 的要求,还可以与其他加密产品一起使用。
依赖关系
Botan 或 OpenSSL 加密库可用于 SoftHSM 项目。如果 Botan 与 SoftHSM 一起使用,请确保它支持 GNU MP (--with-gnump),这将提高公钥操作期间的性能。
安装
SoftHSM 可以从 OpenDNSSEC 网站获得,可以通过以下方式使用 wget 命令下载。
wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz
现在,按以下方式使用 tar 命令提取包。
提取后,运行配置脚本以检查 SoftHSM 软件的依赖项。
./configure
以下快照显示配置脚本由于缺少 \OpenSSL header\ 包而显示错误。
所以解决这个问题,按照下面突出显示的方式安装 \openssl-dev\ 包。
apt-get 安装 openssl-dev
配置脚本的输出显示所有必需的包现在都可用于工具的编译。
以下快照显示了可用于 SoftHSM 工具的配置脚本的选项。
配置脚本提供的所有选项都可以通过以下命令访问:
./configure --help
--disable-ecc Disable support for ECC (default enabled) --disable-gost Disable support for GOST (default enabled) --disable-visibility Disable hidden visibilty link mode [enabled] --with-crypto-backend Select crypto backend (openssl|botan) --with-openssl=PATH Specify prefix of path of OpenSSL --with-botan=PATH Specify prefix of path of Botan --with-migrate Build the migration tool. Used when migrating a SoftHSM v1 token database. Requires SQLite3 --with-objectstore-backend-db Build with database object store (SQLite3) --with-sqlite3=PATH Specify prefix of path of SQLite3 --disable-p11-kit Disable p11-kit integration (default enabled) --with-p11-kit=PATH Specify install path of the p11-kit module, will override path given by pkg-config
现在,运行 make 命令来编译 SoftHSM 的源代码。
make
接下来,运行“make install command”来安装 SoftHSM 工具。
make install
配置文件
配置文件的默认位置是 /etc/softhsm2.conf,可以通过设置
SOFTHSM2_CONF
环境变量来更改。export SOFTHSM2_CONF=Path_of_SoftHSM_Conf_file
SoftHSM 的默认设置显示在以下快照中。
初始化软令牌
使用 SoftHSM 的第一步是对其进行初始化。我们可以使用“softhsm2-util”或“PKCS#11”接口来初始化设备。以下快照显示了 SoftHSM 设备的初始化。
softhsm2-util --init-token --slot 0 --label "Token-1"
安全官 (SO) PIN 用于重新初始化令牌,用户 PIN 被分发给应用程序,以便它可以与令牌交互(就像使用 Mozilla Firefox 一样)。这就是为什么同时设置 SO 和用户 PIN 的原因。一旦一个令牌被初始化,更多的插槽将自动添加到一个新的未初始化的令牌中。初始化的令牌将根据令牌序列号重新分配到另一个插槽。建议通过在插槽列表/令牌信息中搜索令牌标签或序列号来查找令牌并与之交互。
\softhsm2-util\ 的其他选项如下所示。
以下快照显示了令牌的插槽。
备份
所有令牌及其对象都存储在 softhsm2.conf 给定的位置。因此,备份可以作为常规文件副本来完成。
带有 OpenSC 实用程序的 SoftHSM
在本教程中,OpenSC 项目的 PKCS11 实用程序用于访问 SoftHSM 设备。有关 \OpenSC\ 的安装和使用的详细信息,请访问 howtoforge 站点。
apt-get install opensc
以下快照显示 PKCS#11 命令在 SoftHSM 上运行。 \-t\ 开关用于测试 SoftHSM 的机制。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t
结论
在本文中,我们讨论了如何在 Ubuntu 平台上安装和初始化基于软件的 HSM 工具 SoftHSM。它可以使用 PKCS11 标准进行配置,以便 HSM/智能卡访问设备。