如何在Ubuntu 16.04 LTS上安装和使用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命令以下面的方式提取软件包。
解压后,运行configure脚本检查SoftHSM软件的依赖关系。
./configure
以下快照显示配置脚本由于缺少“OpenSSL头”包而显示错误。
所以解决这个问题,按照下面突出显示的方式安装“openssl-dev”包。
apt-get install 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。 一旦令牌被初始化,更多的socket将自动添加到一个新的未初始化的令牌。 初始化令牌将根据令牌序列号重新分配给另一个socket。 建议通过在槽列表/令牌信息中搜索令牌标签或序列号来查找并与令牌交互。
下面显示了“softhsm2-util”的其他选项。
以下快照显示了令牌的socket。
备用
所有的令牌及其对象都存储在softhsm2.conf给出的位置。 因此备份可以作为常规文件副本来完成。
SoftHSM与OpenSC实用程序
在本教程中,OpenSC项目的PKCS11实用程序用于访问SoftHSM设备。 有关“OpenSC”的安装和使用的详细信息,请访问youcl网站 。
apt-get install opensc
以下快照显示在SoftHSM上运行PKCS#11命令。 “-t”开关用于测试SoftHSM的机制。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t
结论
在本文中,我们讨论了如何在Ubuntu平台上安装和初始化基于软件的HSM工具SoftHSM。 可以使用PKCS11标准对HSM /智能卡进行配置以访问设备。